2017-03-28 2 views
0

Angenommen, ich habe 2 Formulare, die Schritt für Schritt eingereicht werden. In erster Seite, ich habeMultiple Schritt Formular Einreichung, loswerden 'Form Wiedervorlage' Dialog des Browsers

Seite1:

<form action='page2.php' method='post'> 
    <input type='email' name='email'> 
    <input type='submit' name='submit' value='Submit'> 
</form> 

Seite 2: Auf dieser Seite, ich werde überprüfen, ob die E-Mail in meiner Website verfügbar ist oder nicht. Wenn verfügbar, wird die E-Mail angezeigt und der Benutzer wird nach seiner Telefonnummer gefragt.

if(isset($_POST['submit'])){ 

    echo $_POST['email']; 
    ?> 

<form action='page3.php' method='post'> 
    <input type='number' name='number'> 
    <input type='submit' name='submit' value='Submit'> 
</form> 

    <?php 

} 

Page3: Wenn die Telefonnummer angegeben ist, wird es hier validiert werden und der Benutzer wird zu ‚somepage.html‘ weitergeleitet.

Nun, meine Frage ist, ich werde auf die Probleme der Wiedervorlage von Form kümmern. Ich möchte jedoch nicht, dass Benutzer das Dialogfeld "Formular erneut senden" in ihren Browsern sehen, wenn sie Seite2 aktualisieren. Und dieser Prozess muss in zwei Schritten durchgeführt werden. In Page2 ist es notwendig, die gepostete E-Mail in Page1 anzuzeigen. Wie kann dieser ganze Prozess durchgeführt werden? Es ist hilfreich für mich, wenn der Code von Anfang bis Ende geschrieben wird (von Seite 1 bis Seite 3).

+0

Ich habe nie getan dies manuell, normalerweise Frameworks tun es für Sie. Wenn ich nicht irre, werden die Daten, die Sie übermitteln, in der Sitzung gespeichert und nicht als $ _POST (das Aktualisieren der Seite wird Sie nicht auf diese Weise erneut bitten) http://stackoverflow.com/questions/14465464/storing-all-post-data -in der Sitzung – JapanGuy

+0

Bitte korrigieren Sie mich, wenn Sie falsche Anweisungen geben, dies kann Sicherheitslücken haben – JapanGuy

+1

Wenn Ihr einziges Ziel ist, nach der Telefonnummer unter der Bedingung zu fragen, dass der Kunde Ihnen seine E-Mail-Adresse gab, dann besteht keine Notwendigkeit habe zwei Formen oder zwei Seiten. – Kobbe

Antwort

0

Try this:

page1.php

<?php 
    session_start(); 
    if(isset($_POST['submit'])){ 
     $_SESSION['email'] = $_POST['email']; 
     header('Location:page2.php'); 
     exit; 
    } 
?> 

<form action='' method='post'> 
    <input type='email' name='email'> 
    <input type='submit' name='submit' value='Submit'> 
</form> 

Dies sollte das "Formular Resubmission" in "Page 2" entfernen, während die E-Mail zu halten

+0

und in Ihrer Abfrage zu überprüfen, ob E-Mail vorhanden ist, verwenden Sie '$ _SESSION ['E-Mail']' 'anstelle von' $ _POST ['E-Mail'] ' – JapanGuy

+1

@JapanGuy Ich habe nicht die Mühe, etwas zu überprüfen, ich habe nur die" Form Resubmission "Frage – Swellar

+0

oh yeah Ich bezog mich auf das OP in meinem Kommentar. Aber kann ich dich fragen, wie man es sicherer macht? Willst du für mich selbst wissen. Nachdem Sie spezielle Zeichen, Htmlentities, Anführungszeichen und andere Dinge entfernt haben, können Sie, nachdem Sie alle Prüfungen durchgeführt haben, einfach die Zuweisung wie '$ _SESSION [" var "] = $ _ POST [" var "]' sicher durchführen. – JapanGuy

Verwandte Themen