Проверка, если форма была отправлена-PHP


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

сначала я подумал, что:

isset($_POST)

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

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

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

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

8 108

8 ответов:

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

if (!empty($_POST))

EDIT: как указано в комментариях, этот метод не будет работать в некоторых случаях (например, с флажками и кнопкой без имени). Вы действительно должны использовать:

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

как о

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

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

попробуйте в форме:

<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)";
}

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

использовать

if(isset($_POST['submit'])) // name of your submit button

попробуй такое

 <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'])){

    }

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

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

<input type="submit" name="add" value="Submit">

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

is_array($_POST)