PHP-Multiform-Validierung und -Umleitung
-
09-06-2019 - |
Frage
Ich habe buy.php
mit einem bilden wo Sie eintreten Artikel, Menge, Versanddaten usw.
Wenn Sie auf klicken Schaltfläche „Senden“., es wird zurückgesendet buy.php
($_SERVER['PHP_SELF'])
und führt einige Datenvalidierungen durch.
Fehlende Felder oder Fehler werden hervorgehoben.Wenn alles korrekt ist, speichere ich das $_POST
Daten in $_SESSION
Variablen, dann machen Sie a header('Location: check.php')
, wo ich die Daten anzeige, damit der Käufer die Informationen noch einmal überprüfen kann, bevor er tatsächlich kauft.
Wenn ich jetzt dabei bin check.php
und klicken Sie auf die Schaltfläche „Zurück“. buy.php
Damit ich Dinge ändern kann, fragt der Browser, ob ich die POST-Daten erneut senden möchte.Das versuche ich zu vermeiden.
Hat jemand gute Ratschläge oder bewährte Methoden für die PHP-Multiform-Validierung?
Wenn ich außerdem n Seiten hätte, die der Benutzer ausfüllen könnte, buy.php, buy2.php, ... buyn.php
Würden vor check.php die gleichen Ideen noch gelten?
Lösung
Sie könnten eine Umleitung tun nach dem Sitzungsobjekt Speicher buy.php, die dann einen Server Umleitung tut check.php, würde es bedeuten, wenn der Benutzer klickt zurück, sie gehen zurück auf die GET-Anforderung nicht POST-Anfrage
Andere Tipps
Ja - Ich bin damit einverstanden oben mit. Ich tue immer eine redir
weg vom letzten Beitrag, springt sie ohne diesen Fehler zurück, so klicken zurück oder Wiedervorlagen. es vermeidet auch Komplikationen. u kann die redir
Link-Seite mit einem ?m
oder &m
immer markiert (d.h .: page.php?m
) und hat diese oben auf der Seite: (Verwendung elseif
dort nach)
if (isset($_GET['m'])) {
echo 'order placed.';
}
else {
//...
}
können Sie haben es auch auf einer Seite. Nur die Submit-Name buttons submit1
, submit2
, wie: (bedenken, wenn Sie ein Bild für vorträgt verwenden, wird es $_POST['submit1_x']
:)
if (isset($_POST[submit1]) {
//validate + save session data from form1
//display form 2
} else if(isset($_POST[submit2])) {
//validate + save session data from form2
//display form 3
} else {
//display first form
//<input type="submit" name="submit1" value="Continue">
}