dedlfix: Session-Daten gehen bei Back verloren

Beitrag lesen

echo $begrüßung;

Ist das nicht zu verhindern (was ich mir nicht vorstellen kann) oder was kann man da tun, dass die Session-Daten auch bei "Back" erhalten bleiben?

Du gibst einfach zu wenig Informationen, um als Außenstehender dein Problem nachvollziehen zu können.

  1. Jedes Script, das mit den Sessiondaten arbeiten möchte, muss am Anfang session_start() aufrufen.
  2. Trifft PHP das erste Mal auf session_start(), sendet es einen Cookie an den Client, der die Session-ID (SID) enthält. Alle Daten, die man im Laufe des Scripts in $_SESSION ablegt, werden serverseitig in einer Datei abgelegt, die nach der SID benannt ist.
  3. Erfolgt nun ein weiterer Aufruf eines Scripts (das gleiche oder ein anderes), das ein session_start() enthält, schaut PHP nach, ob der Client ein SID-Cookie mitgesendet hat. Wenn ja, wird die zugehörige Session-Datei geöffnet und die darin enthaltenen Daten stehen wieder zur Verfügung. Wenn nein, geht es bei 2) weiter.
  4. Wenn jemand mit der Back-Funktion auf die "vorherige" Seite geht, hat der Browser zwei Möglichkeiten.
  5. Er kann die Seite einfach aus dem Cache holen und anzeigen.
  6. Ist die Seite im Cache veraltet, oder hat der Browser anderweitig mitgeteilt bekommen, dass die Seite nicht zu cachen ist, erfolgt ein neuer Request an den Server gemäß 3). Normalerweise wird dabei das SID-Cookie mitgesendet.

Nun gibt es auch noch die Möglichkeit, dass der Client keine Kekse annehmen mag. In dem Fall weicht PHP selbständig auf die Alternative "Anhängen der SID an die URL" aus, wenn session.use_only_cookies auf 0 bzw. off steht und session.use_trans_sid auf 1 bzw. on.
Macht der Browser nun einen "Back-Request" gemäß 6) und war die vorherige Seite die erste Session-Seite, wie bei 2), gibt es nun keinen SID-Keks und auch noch keine SID in der URL, so dass PHP nichts anderes übrig bleibt, als eine neue Session zu starten.

echo "$verabschiedung $name";