HTTP-Verbindungen zwischen einem Client und einem Server sind aufgrund der Definition des HTTP-Protokolls grundsätzlich nicht-persistent. Das bedeutet, dass nach jedem Abruf eines Dokuments die Verbindung zwischen Client und Server wieder geschlossen wird.
Häufig ist es aber nötig, die Eingaben, die eine Benutzerin oder ein Benutzer auf einer Seite gemacht hat, später wieder abzurufen. Eine Passwortabfrage sollte beispielsweise dazu berechtigen, so lange bestimmte Seiten abzurufen, bis sich die Benutzerin oder der Benutzer wieder abmeldet. Beim Online-Shopping muss die Information darüber, welche Artikel eine Kundin oder ein Kunde bestellen möchte, mitgeführt werden, bis am Schluss die Bestellung wirklich ausgelöst wird.
Ein über das Web abgewickelter Vorgang, der den Besuch mehrerer Einzelseiten beinhaltet, wird Session genannt. Beispiele dafür sind das Verfassen einer E-Mail auf einem Webclient, eine Bestellung eines oder mehrerer Artikel in einem Online-Shop oder eine Online-Banktransaktion.
Traditionell werden die Informationen, die während einer Session gespeichert werden müssen, mit Hilfe von Cookies auf dem Clientrechner abgelegt. Mit PHP ist es möglich, lediglich eine lange Zahl, die so genannte Session-ID, in einem Cookie zu speichern und die eigentlichen Benutzerangaben (wie Passwort, Bestellungen etc.) auf dem Server zu belassen. Es ist sogar möglich, PHP so zu konfigurieren, dass Sessions auch dann noch funktionieren, wenn auf dem Client-Browser Cookies abgestellt sind; in diesem Fall wird die Session-ID als GET-Variable in der URL übertragen.
Wir sehen uns heute ein ganz einfaches Beispiel an, in dem Sie sehen, wie Sessions allgemein programmiert werden. Dann sehen wir uns an, wie sie im Fall des Gästebuchs verwendet werden.
Um das einfache Session-Beispiel kennenzulernen, klicken Sie auf einen der folgenden Links:
| start.php | (Quellcode) | Session starten |
| red.php | (Quellcode) | Sessionvariable verwenden (I) |
| green.php | (Quellcode) | Sessionvariable verwenden (II) |
| stop.php | (Quellcode) | Session beenden |