Проверка, была ли отправлена ​​форма - PHP - PullRequest
118 голосов
/ 10 октября 2011

Каков наилучший способ проверить, была ли отправлена ​​форма, чтобы определить, должен ли я передавать переменные формы в свой класс проверки?

Сначала я подумал:

isset($_POST)

Но это всегда будет возвращать истину, поскольку суперглобальный определяется везде.Я не хочу повторять каждый элемент моей формы с помощью:

if(isset($_POST['element1']) || isset($_POST['element2']) || isset(...etc

. При написании этого вопроса я подумал о гораздо более простом решении, добавив скрытое поле, чтобы действовать как флаг, который яможете проверить.

Есть ли более "чистый" способ сделать это, чем добавить свой собственный флаг?

Ответы [ 8 ]

179 голосов
/ 10 октября 2011

Для общей проверки, было ли действие POST, использовать:

if (!empty($_POST))

РЕДАКТИРОВАТЬ : Как указано в комментариях, в некоторых случаях этот метод не работает (например, с флажками и кнопкой без имени). Вы действительно должны использовать:

if ($_SERVER['REQUEST_METHOD'] == 'POST')
165 голосов
/ 10 октября 2011

Как насчет

if($_SERVER['REQUEST_METHOD'] == 'POST')
68 голосов
/ 17 марта 2012

На самом деле кнопка отправки уже выполняет эту функцию.

Попробуйте в ФОРМЕ:

<form method="post">
<input type="submit" name="treasure" value="go!">
</form>

Тогда в обработчике PHP:

if (isset($_POST['treasure'])){
echo "treasure will be set if the form has been submitted (to TRUE, I believe)";
}
31 голосов
/ 10 октября 2011

Используйте

if(isset($_POST['submit'])) // name of your submit button
29 голосов
/ 10 октября 2011

if ($_SERVER['REQUEST_METHOD'] == 'POST').

13 голосов
/ 18 января 2013

Попробуйте это

 <form action="" method="POST" id="formaddtask">
      Add Task: <input type="text"name="newtaskname" />
      <input type="submit" value="Submit"/>
 </form>

    //Check if the form is submitted
    if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['newtaskname'])){

    }
0 голосов
/ 24 июня 2018

У меня была такая же проблема - также убедитесь, что вы добавили name="" в кнопку ввода. Ну, это исправление сработало для меня.

if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['add'])){
    echo "stuff is happening now";
}

<input type="submit" name="add" value="Submit">
0 голосов
/ 10 октября 2011

Вы также можете использовать:

is_array($_POST)
...