EisFuX: Sessions mit HTTP und GET

Beitrag lesen

(Hallo|Hi(ho)|Tag) Eliane82,

Danke für Eure schnellen Antworten!

Die hier kommt etwas später ... ;-)

Die Sessions-ID bleibt immer gleich. Das Formular dazwischen arbeitet mit der GET-Methode. Doch welche Möglichkeit gibt es, um die benutzte Sessions-ID auf der Start- bzw. Eintrittseite ausfindig zu machen.

Wenn du mit den Sessionfunktionen von PHP arbeitest, erfährt das Script automatisch, ob eine Session-ID übermittelt wurde. Allerdings passiert es, dass beim "Zurückblättern" per Back-Button oder Browser-Menü der Browser gar nicht erst den Server kontaktiert. Dann erfährt das Server-Skript natürlich auch nichts von der Aktion (kann also auch die Session-ID nicht ausfindig machen).

Eine Möglichkeit wäre vielleicht eine Änderung der Sessionskonfigurationsdatei auf dem Server, doch für diese habe ich keinen Zugriff. Des Weiteren sah ich in einem Forum, dass diese Konfigurationsparameter auch manuell auf jeder Seite im Headerbereich geändert werden können, doch dies funktionierte nicht wirklich...

Wie schon oben erwähnt: Wenn der Browser keine Anfrage an den Server schickt, kannst du auf dem Server herumkonfigurieren wie du willst -- es hat keine Auswirkung.

Ich möchte denjenigen die Möglichkeit geben die Session beizubehalten, die die Cookies deaktiviert haben.

Das ist ja auch gar kein Problem

Mir scheint, dass bei dir ein Missverständnis bezüglich des Ablaufs von Session-basierten HTTP-Requests vorliegt. Speziell für den Fall mit GET-Parameter (also ohne Cookies und ohne POST-Formular) läuft das so ab:

0. Der Client (Browser) schickt die (allererste) Anfrage an den Server. Er weiß nichts von Sessions.

1. Der Server antwortet und schickt eine Web-Seite zurück. In der sind sämtliche Links, die zur Session gehören sollen, mit einem zusätzlichen Parameter (der Session-ID) versehen[1].

2. Ruft der Client jetzt eine dieser speziell verlinkten Seiten ab, vergleicht der Server (oder das Server-Skript) die Session-ID mit seiner Liste (z.B. in einer Datenbanktabelle oder wo auch immer) von gültigen Sessions. Ist die Session-ID gültig, dann macht der Server weiter wie in Punkt 1 beschrieben.

"Blättert" der Browser-Benutzer jetzt zurück, holt der Client (in den meisten Fällen) die schon einmal angeforderte Seite aus seinem Cache. Er teilt dies aber dem Server nicht mit (schickt also keine Anfrage an den Server). Das kannst du vom Server aus nicht verhindern.

Die Startseite enthält ein Formular mit der GET-Übertragungsmethode.

Baue deine Startseite so um, dass alle Links eine Session-ID bekommen. Das gilt auch für das action-Attribut des Formulars, aber nur für den Fall, dass der Browser die Session-ID nicht schon per Cookie geschickt hat. Die Session-ID muss neu generiert werden, wenn beim Aufruf der Startseite keine gültige mit übertragen wurde.

Danach kommt eine Auflistung der gefundenen Datenbankeinträge. Anschliessend kommt die Seite für eine Detailansicht des jeweiligen Eintrages.
Die Session benötige ich dazu, um die Parameterauswahl im Formular bei Rückkehr (Zurück via Browsermenue) beizubehalten.

MffG
EisFuX

[1]http://de3.php.net/manual/de/session.idpassing.php