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:
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?
Nun, Sie könnten einen Submit-Button erstellen, der einen bestimmten Namen hat, wie z submited und benutze dann die php if(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
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.
if (isset($_POST['treasure'])){
echo "treasure will be set if the form has been submitted (to TRUE, I believe)";
}
Dies ist die richtige Antwort. Es reicht nicht aus, einfach nach $_POST zu suchen, da es von verschiedenen Stellen generiert worden sein könnte … nicht nur von einem Formularbeitrag. Danke Tzshand.
– Houston
19. November 2013 um 12:39 Uhr
Idealerweise sollten Sie jetzt verwenden if (null !== (filter_input(INPUT_POST, 'macaddress'))){ wodurch Sie sich angewöhnen, filter_input zu verwenden
– depicus
20. Februar 2015 um 9:46 Uhr
POST kann mit Ajax durchgeführt werden, das keine Submit-Schaltfläche hat, daher ist dies keine universelle Lösung.
– Muhammad bin Yusrat
27. Juli 2015 um 5:54 Uhr
Das ist richtig; Es kann auch jede von AJAX gepostete Variable überprüfen.
– Tzshand
7. Juni 2017 um 22:00 Uhr
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.:
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