Christian Seiler: Problem mit Back-Button / Session / POST

Beitrag lesen

Hallo Flo,

Was ist mit der Seite auf die ich weiterleite?
Muss ich die dann extra erstellen? <-- wäre ja irgendwie umständlich
Erstellt die sich automatisch?
Oder hab ich da was falsch verstanden und da muss überhaupt nix zusätzliches erstellet werden.

Doch, Du musst die Bestätigungsseite selbst erzeugen. Dazu eignen sich Sessions. Du speicherst in der Session alle Infos, die Du brauchst, um die Antwort auszugeben, unter einer eindeutigen Nummer (also unter $_SESSION['answer_infos'][$id] wobei $id z.B. eine Zufallszahl ist) und dann leitest Du an http://host/answer.php?id=245681111 weiter. Diese Seite holt sich alle Infos, die sie zur Generierung der Antwortseite braucht. Dann gibt sie die Antwortseite aus. Du kannst Dich übrigens nicht darauf verlassen, das die Antwortseite nur einmal aufgerufen wird, Browser mit mangelhaften Cachingeinstellungen holen sie jedes mal vom Server. :-( Daher solltest Du die Infos, die Du zum Erstellen der Antwort brauchst, möglichst kompakt halten, damit die Session nicht unnötig groß wird. Wenn Du nur ein einziges Formular hättest und das sowieso immer die gleiche bestätigungsseite hat, dann wäre es natürlich einfacher, dann könntest Du auf eine statische HTML-Seite weiterleiten.

Oder ... halt, funktioniert es so das dem Browser quasi nur _vorgetäscht_ wird das es sich NICHT um eine POST-Seite sondern eine ganz normale handelt und er sie somit cached?

Nein.

Ach ja, eine HTTP-Weiterleitung hat einen weiteren Vorteil: sie erzeugt keinen zusätzlichen History-Eintrag, d.h. wenn der Benutzer (nachdem er auf einen Link geklickt hatte) auf »Zurück« klickt, dann landet er auf der Antwortseite und wenn er es nochmal tut, dann landet er wieder beim Formular, jedoch nie beim Verarbeitungsscript. (es sei denn, er schickt das Formular noch mal ab, aber das solltest Du sowieso abfangen, es sei denn, das würde nichts ausmachen (es gibt ein paar Fälle, wo dem der Fall ist))

Grüße,

Christian

--
Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.