Wie kann ich am besten überprüfen, ob ein Formular gesendet wurde oder nicht, um festzustellen, ob ich die Variablen des Formulars an meine Validierungsklasse übergeben soll?
Zuerst dachte ich vielleicht:
isset($_POST)
Aber das wird immer wahr, da ein Superglobal überall definiert ist. Ich möchte nicht jedes Element meines Formulars durchlaufen müssen mit:
if(isset($_POST['element1']) || isset($_POST['element2']) || isset(...etc
Beim Schreiben dieser Frage dachte ich an eine viel einfachere Lösung, füge ein verstecktes Feld hinzu, das als Flag fungiert, das ich überprüfen kann.
Gibt es einen “saubereren” Weg, als mein eigenes Flag hinzuzufügen?

Matino
Zur allgemeinen Überprüfung, ob es eine gab POST
Aktion verwenden:
if (!empty($_POST))
BEARBEITEN: Wie in den Kommentaren angegeben, funktioniert diese Methode in einigen Fällen nicht (z. B. bei Kontrollkästchen und Schaltflächen ohne Namen). Sie sollten wirklich verwenden:
if ($_SERVER['REQUEST_METHOD'] == 'POST')
Wie wäre es mit
if($_SERVER['REQUEST_METHOD'] == 'POST')

Tzshand
Tatsächlich erfüllt der Submit-Button diese Funktion bereits.
Versuchen Sie es im FORMULAR:
<form method="post">
<input type="submit" name="treasure" value="go!">
</form>
Dann im PHP-Handler:
if (isset($_POST['treasure'])){
echo "treasure will be set if the form has been submitted (to TRUE, I believe)";
}

Rikesch
Verwenden
if(isset($_POST['submit'])) // name of your submit button
if ($_SERVER['REQUEST_METHOD'] == 'POST')
.

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

Boendal
Andererseits ist es auch immer eine gute Praxis, Ihrem Formular ein Token hinzuzufügen und es zu überprüfen, um zu überprüfen, ob die Daten nicht von außen gesendet wurden. Hier sind die Schritte:
-
Generieren Sie ein eindeutiges Token (Sie können Hash verwenden) Bsp.:
$token = hash (string $algo , string $data [, bool $raw_output = FALSE ] );
-
Weisen Sie dieses Token einer Sitzungsvariablen zu. Ex:
$_SESSION['form_token'] = $token;
-
Fügen Sie eine verborgene Eingabe hinzu, um das Token zu übermitteln. Ex:
input type="hidden" name="token" value="{$token}"
-
Überprüfen Sie dann als Teil Ihrer Validierung, ob das übermittelte Token mit der Sitzungsvariable übereinstimmt.
Ex: if ( $_POST['token'] === $_SESSION['form_token'] ) ....
10021300cookie-checkPrüfen, ob das Formular gesendet wurde – PHPyes
Nun, Sie könnten einen Submit-Button erstellen, der einen bestimmten Namen hat, wie z
submited
und benutze dann die phpif(isset($_POST['submited']))
oder ein versteckter Eingang …– Max Allan
10. Oktober 2011 um 10:33 Uhr
Sie sollten eine Ankündigung hinzufügen, um Replay-Angriffe auf Ihr Formular zu verhindern.
– hakre
10. Oktober 2011 um 10:35 Uhr