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?

War es hilfreich?

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">
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top