PHP – правильная проверка, если отправлен $ _POST

Я хочу проверить, отправлен ли $ _POST ['submit'].

Мой оригинальный код:

if ($_POST['submit']) { } 

Но у меня есть PHP-уведомление с этим кодом – «Undefined index: submit in …»

Поэтому, чтобы удалить уведомление, я должен написать это:

 if (isset($_POST['submit'])) { } 

Но это бессмысленно, потому что массив $ _POST является глобальным и всегда возвращает true. Также, если я хочу проверить, не является ли $ _POST ['submit'] 0 без уведомления PHP, я должен написать это:

 if (isset($_POST['submit']) && $_POST['submit'] != 0) { } 

В этом конкретном случае я предпочитаю:

 if ($_POST['submit']) {} 

Но здесь я получаю уведомление PHP.

Итак, какой путь является наиболее правильным / приемлемым?

спасибо

isset($_POST['submit']) проверяет, задан ли ключ submit в массиве $_POST . Он не просто проверяет, существует ли массив $_POST и поэтому не «бессмыслен». Если вы хотите проверить, не является ли значение ложным ( == false ), которое включает 0 , без запуска ошибки, это то, что empty :

 if (!empty($_POST['submit'])) 

это то же самое, что и

 if ($_POST['submit']) 

но не вызывая уведомления, если значение не существует.

См. «Руководство по окончательному варианту» на «Исеть» PHP и пустое для исчерпывающего объяснения.

Пытаться

 if ($_SERVER['REQUEST_METHOD']=='POST') { //do } 

$ _POST [] проверяет, отправлена ​​ли переменная, а не имя формы.

if (isset ($ _ POST ['name']) {}

По моему пониманию, это должно быть как показано ниже:

 if (isset($_SERVER) && isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']=='POST'){ # if method is post, code goes here. } 

и если вы уверены, что ваш метод POST наверняка. и у вас есть сообщение в $_POST вы можете использовать код, как показано ниже:

 if (isset($_POST['submit']) && $_POST['submit'] != '') {# I think, '' instead of 0 # if data is posted, code goes here. } 

Обычно я предпочитаю $_POST .