Я хочу проверить, отправлен ли $ _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
.