As per the title: is if($_POST)
reliable?
Is it reliably true
even if no data was posted but the HTTP POST method was used?
Is if('post' === strtolower($_SERVER['REQUEST_METHOD']))
a more reliable method, or is it overkill?
No.. because:
array() == false
So if no data is posted, the condition will turn out false. So check against the REQUEST_METHOD. Note that it would have taken you less time to test this, than for me to type this out.