Affenformular mit Session wird erst beim zweiten senden übernommen.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Affenformular mit Session wird erst beim zweiten senden übernommen.

    Hallo, bei der entwicklung eines Formulars bin ich auf etwas gestoßen was ich nicht kapiere.

    Ich nutze ein Affenformular, also eine php Datei die sich selbst aufruft, wenn die eingegeben Daten nicht valide sind.
    Gibt der nutzer alle Daten korrekt ein, möchte ich dass das Formular nicht mehr angezeigt wird, und stattdessen etwas durchgeführt wird. (also if else). Ich habe mir überlegt eine Session Variable auf true (alle eingaben richtig) bzw. false zu verwenden. Mein Code bis jetzt sieht so in abgespeckter Version aus (die validitätsabfragen habe ich der übersicht wegen rausgenommen):

    Quellcode

    1. <?php
    2. session_start();
    3. //Prüfe ob es der erste Aufruf ist, bzw. rufe das Formular auf wenn die Daten NICHT valide sind.
    4. if(!isset($_SESSION['valid']) || $_SESSION['valid'] == false)
    5. {
    6. echo "form wird gesendet"
    7. ?>
    8. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
    9. <?php
    10. //!!! Hier stelle ich dar ob die Eingabe richtig oder falsch ist !!!
    11. $_SESSION['valid'] = false; ?>
    12. <input type="submit" name="submit" value="Abrufen">
    13. </form>
    14. <?php
    15. }
    16. else
    17. {
    18. echo "form wird NICHT gesendet"
    19. ?>
    20. <?php
    21. }
    22. ?>
    Alles anzeigen


    Bei dem Kommantar mit den 3 !!! simuliere ich die Benutzereingabe. Geht man davon aus, dass die ersten beiden Benutzereingaben falsch sind, wird korrekterweise das Formular erneut gesendet. Stelle ich die $_SESSSION['valid'] jetzt aber auf true (die Benutzereingaben sind valide), muss ich 2 x auf den submit Button drücken, bevor das Formular NICHT mehr gesendet wird.

    Woran liegt das? Ich hätte gerne dass man den nur 1 x drücken muss. Was muss ich ändern?
  • Quellcode

    1. <?php
    2. # Funktion zum Forumlar anzeigen (kann auch eine TPL oder so sein)
    3. function show_form() {
    4. echo '<form method="post">';
    5. echo ' <input type="text" name="name" value="'.(isset($_POST['name']) ? htmlspecialchars($_POST['name']) : 'Hans').'" />';
    6. echo ' <input type="submit" name="submit" value="Absenden" />';
    7. echo '</form>';
    8. }
    9. # Wenn nichts gesendet wurde -> Forumlar anzeigen
    10. if (!isset($_POST['submit'])) show_form();
    11. else {
    12. $is_valid = true;
    13. # Eingabe überprüfen
    14. if ($_POST['name'] != 'Peter') $is_valid = false;
    15. # Forumlar anzeigen wenn die Eingabe ungültig war
    16. if (!$is_valid) {
    17. # Eingabe war ungültig
    18. echo 'versuchs nochmal!<br/>';
    19. show_form();
    20. } else {
    21. # Eingabe war gültig
    22. echo 'du hasts geschafft!';
    23. }
    24. }
    25. ?>
    Alles anzeigen


    Meinst du sowas?

    Grüße

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von iSn0w ()