До PHP 4.1 не было $ _POST. Вместо этого была переменная с именем $ HTTP_POST_VARS, которая делала то же самое, за исключением того, что она не была суперглобальной. $ HTTP_POST_VARS устарела, и, надеюсь, вам не нужно слишком беспокоиться об этом, но проверка $ _POST может фактически вернуть false, если вы запустили установку php <4.1, поэтому ваш код мог проверить это. </p>
if ($_POST)
ведет себя идентично if (!empty($_POST))
, за исключением одного важного различия: первая версия выдаст уведомление, если $ _POST не установлена, пустая () - версия не выдаст уведомление (конечно, error_output должен быть установлен чтобы эхо уведомлений для вас, чтобы увидеть что-то). Вы должны всегда использовать пустой, если проверяемая переменная может быть не установлена.
Я бы сказал, что если вы найдете if ($_POST)
, то это плохой запах. Вы уже заметили, что намерение оригинального кодера неясно. Если он хочет знать, что HTTP-запрос использовал POST-метод, то ответ Ваутера проясняет намерение. Если он хотел проверить, существует ли вообще $ _POST (проверьте для старой версии PHP), тогда isset($_POST)
более понятен. Если он хотел проверить, что POST-запрос имеет хотя бы один параметр, отправленный с использованием POST, то empty($_POST)
намного яснее, и такое намерение должно быть крайне редко.
Я советую продолжить чтение источника и проверить, можете ли вы выяснить, какое намерение имел исходный кодер, и затем соответствующим образом заменить конструкцию (или, по крайней мере, оставить комментарий в этой строке).