4.8 Cookies & Sessions
HTTP ist ein zustandsloses Protokoll. Somit hat der Server keine Informationen darüber, welche Anfragen ein Client bereits zuvor durchgeführt hat. Um "Zustände" irgendwie "zwischenspeichern" zu können, werden Cookies und Sessions genutzt.
Cookies
Für das Setzen von Cookies gibt es die Funktion setcookie ("Name", "Inhalt", Verfallsdatum, "Pfad", "Domain", secure).
Diese Funktion sendet einen mit HTTP Header-Informationen zu übertragenden Cookie. Dies muss vor der Ausgabe des Scripts geschehen, also vor dem eigentlichen HTTP-Body.
Schlägt setcookie()
fehl, wird false
zurückgegeben, bei Erfolg true
. Dies allerdings ist keine Aussage darüber, ob der User den Cookie akzeptiert hat oder nicht.
Als Beispiel wird hier wieder das Formular verwendet, welches nach einem Vor- und Nachnamen fragt.
Die Prozedur kann beliebig oft wiederholt werden, da das Cookie im Browser immer wieder automatisch überschrieben wird.
Sessions
Die Verwendung von Sessions bietet sich immer dann an, wenn Daten über mehrere Webaufrufe hinweg transportiert werden müssen, beispielsweise um Formulardaten auch auf den nachfolgenden Seiten auswerten zu können oder damit die Login-Daten auf mehreren Seiten zur Verfügung stehen. Auf einer ersten Seite wird eine Session gestartet, die dann entsprechende Parameter an alle folgenden Seiten übergibt.
Funktion | Beschreibung |
---|---|
session_start() | Initialisiert eine Session oder nimmt die aktuelle wieder auf (Funktion gibt immer true zurück) |
session_destroy() | Logout – löscht also alle registrierten Daten |
session_name() | Liefert den Session-Namen |
session_id() | Setzt und liefert die aktuelle Session-ID |
session_encode() | Kodiert die aktuellen Session-Daten als Zeichenkette |
session_decode() | Dekodiert Session-Daten aus der Zeichenkette |
Das Zulassen von Sessions ohne Session-Cookies stellt ein Sicherheitsrisiko dar. URLs mit Session-ID können in Browsercaches gefunden und missbraucht werden.
Beispiel
Das Beispiel zeigt, wie mittels einer Session Informationen auf dem Server gespeichert und abgerufen werden können.
Bei dem ersten Aufruf ist noch kein Datum hinterlegt, weshalb der Text „Noch nie!“ angezeigt wird. Ausgabe:
Der letzte Reload war am: Noch nie!
Warten Sie kurz und drücken Sie dann die F5-Taste!
Erst nach einer Aktualisierung der Website erscheint das Datum. Ausgabe:
Der letzte Reload war am: 26.08.2019 17:52:34
Warten Sie kurz und drücken Sie dann die F5-Taste!