Prüfen, ob das Formular gesendet wurde – PHP

Lesezeit: 3 Minuten

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?

  • 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

Prufen ob das Formular gesendet wurde PHP
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')

Prufen ob das Formular gesendet wurde PHP
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)";
}

  • 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

Prufen ob das Formular gesendet wurde PHP
Rikesch

Verwenden

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

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

Prufen ob das Formular gesendet wurde PHP
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'])){

    }

1647272048 456 Prufen ob das Formular gesendet wurde PHP
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:

  1. Generieren Sie ein eindeutiges Token (Sie können Hash verwenden) Bsp.:

    $token = hash (string $algo , string $data [, bool $raw_output = FALSE ] );
    
  2. Weisen Sie dieses Token einer Sitzungsvariablen zu. Ex:

    $_SESSION['form_token'] = $token;
    
  3. Fügen Sie eine verborgene Eingabe hinzu, um das Token zu übermitteln. Ex:

    input type="hidden" name="token" value="{$token}"
    
  4. Überprüfen Sie dann als Teil Ihrer Validierung, ob das übermittelte Token mit der Sitzungsvariable übereinstimmt.

    Ex: if ( $_POST['token'] === $_SESSION['form_token'] ) ....
    

  • Dies funktioniert nur, wenn der Benutzer das Element nicht inspiziert und den Wert erschnüffelt, der in seinen Bots ausgeführt werden soll

    – c0d3x1337

    7. Januar 2021 um 12:50 Uhr

1002130cookie-checkPrüfen, ob das Formular gesendet wurde – PHP

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy