До появления PHP 4.1 не было $ _POST. Вместо этого существовала переменная с именем $ HTTP_POST_VARS, которая делала то же самое, за исключением того, что она не была суперглобальной. $ HTTP_POST_VARS устарел и, надеюсь, вам не нужно слишком беспокоиться об этом, но проверка на $ _POST может фактически вернуть значение false, если вы запустите установку php < 4.1, поэтому ваш код мог бы проверить это.
if ($_POST)
ведет себя идентично if (!empty($_POST))
за одним важным отличием, кроме: Первая версия будет бросать уведомление, если $ _POST не установлен, пустой() - версия не будет бросать уведомление (конечно error_output должен быть установлен эхо уведомления для вас что-то увидеть). Вы всегда должны использовать пустую, если переменная, которую вы проверяете, может не задаваться.
Я бы сказал, что если вы найдете if ($_POST)
, это плохой запах. Вы уже заметили, что намерение оригинального кодера неясно.Если он хочет знать, что HTTP-запрос использовал POST-метод, то ответ Wouter делает намерение более ясным. Если он хочет проверить, существует ли вообще $ _POST (проверьте для старой версии PHP), то isset($_POST)
понятнее. Если бы он хотел проверить, что POST-запрос имеет хотя бы один параметр, отправляемый с использованием POST, то empty($_POST)
намного яснее, также такое намерение должно быть крайне редко.
Моя рекомендация - продолжить чтение источника и проверить, можете ли вы выяснить, какое намерение было у исходного кодера, а затем заменить конструкцию соответствующим образом (или, по крайней мере, поставить комментарий к этой строке).
Кстати, почему вы проверяете массив POST? Вы будете правильно проверять переменные POST? '$ _POST [" data1 "]' –
, вероятно, лучше проверить отдельные переменные 'POST' для достоверности, но причина для его использования заключается в том, что пользователь переходит на страницу обработки формы вручную, в этом случае массив' POST' будет пустым, и вы можете справиться с ситуацией соответствующим образом. Я не думаю, что есть ситуация, когда этот бит кода не удастся. Я считаю, что лучше всего использовать это, а затем проверить каждую переменную отдельно внутри 'if'. – martincarlin87
Я всегда проверяю определенные значения. Мне просто интересно, следует ли мне пройти и редактировать сотни экземпляров if ($ _POST), найденных в коде других народов. – teynon