it-swarm.com.de

Prüfen, ob das Formular übermittelt wurde - PHP

Wie kann ich am besten prüfen, ob ein Formular übermittelt wurde oder nicht, um zu bestimmen, ob ich die Variablen des Formulars an meine Validierungsklasse übergeben soll?

Zuerst dachte ich vielleicht:

isset($_POST)

Aber das wird immer wahr werden, da ein Superglobal überall definiert wird. Ich möchte nicht durch jedes Element meiner Form mit durchlaufen:

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

Beim Schreiben dieser Frage dachte ich an eine viel einfachere Lösung. Fügen Sie ein verstecktes Feld hinzu, das als Flag fungiert, das ich überprüfen kann.

Gibt es eine "sauberere" Möglichkeit, dies zu tun, als meine eigene Flagge hinzuzufügen?

112
Anonymous

Zur allgemeinen Überprüfung, ob eine POST-Aktion vorhanden ist, verwenden Sie: 

if (!empty($_POST))

EDIT: Wie in den Kommentaren angegeben, funktioniert diese Methode in einigen Fällen nicht (z. B. mit Kontrollkästchen und Schaltfläche ohne Namen). Sie sollten wirklich verwenden:

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

Wie wäre es mit 

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

Tatsächlich führt der Submit-Button diese Funktion bereits aus.

Versuchen Sie es im FORMULAR:

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

Dann im Handler PHP:

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

Benutzen

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

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

29
CodeCaster

Versuche dies 

 <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

Ich hatte das gleiche Problem - stellen Sie sicher, dass Sie name="" in die Eingabe-Schaltfläche einfügen. Nun, dieser Fix funktionierte für mich. 

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

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