web-dev-qa-db-fra.com

Vérifier si le formulaire a été soumis - PHP

Quel est le meilleur moyen de vérifier si un formulaire a été soumis ou non pour déterminer si je dois transmettre les variables du formulaire à ma classe de validation?

D'abord j'ai pensé peut-être:

isset($_POST)

Mais cela reviendra toujours vrai comme un superglobal est défini partout. Je ne veux pas avoir à parcourir chaque élément de mon formulaire avec:

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

En écrivant cette question, j'ai pensé à une solution beaucoup plus simple, en ajoutant un champ caché servant de drapeau que je peux vérifier.

Y a-t-il une façon "plus propre" de le faire que d'ajouter mon propre drapeau?

112
Anonymous

Pour vérifier s'il y a eu une action POST, utilisez: 

if (!empty($_POST))

EDIT: Comme indiqué dans les commentaires, cette méthode ne fonctionnera pas dans certains cas (par exemple avec des cases à cocher et un bouton sans nom). Vous devriez vraiment utiliser:

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

Que diriez-vous 

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

En fait, le bouton d'envoi exécute déjà cette fonction.

Essayez dans le formulaire:

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

Puis dans le gestionnaire PHP:

if (isset($_POST['treasure'])){
echo "treasure will be set if the form has been submitted (to TRUE, I believe)";
}
66
Tzshand

Utilisation

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

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

29
CodeCaster

Essaye ça 

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

    }
13
rizon

J'ai eu le même problème - assurez-vous également que vous ajoutez name="" dans le bouton de saisie. Eh bien, ce correctif a fonctionné pour moi. 

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

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