PHP Sessions

Einführung in PHP-Sessions

Das HTTP-Protokoll ist ein zustandsloses Protokoll. Wenn du zum Beispiel die Produktseite produkt.php in deinem Browser aufrufst, antwortet der Webserver mit der entsprechenden Seite. Nehmen wir nun an, du klickst auf der Seite „produkt.php“ auf die Schaltfläche „In den Warenkorb legen“ und navigierst zur Seite „warenkorb.php“. Leider weiß der Webserver nicht, dass du das Produkt zuvor in den Warenkorb gelegt hast.

PHP Programmierer buchen!

Um Informationen über mehrere Seiten hinweg aufrechtzuerhalten, verwendet der Webserver Sessions. Wenn du also wie im obigen Beispiel auf die Schaltfläche „In den Warenkorb legen“ klickst, speichert der Webserver das Produkt auf dem Server. Wenn du anschließend die Seite „warenkorb.php“ aufrufst, ruft der Webserver die Produkte aus der Session ab und zeigt sie auf der Seite „warenkorb.php“ an.

Die Daten, die mit Sessions auf dem Webserver gespeichert werden, sind mit einer sogenannten Session-ID verbunden. Sobald du eine Session erstellst, sendet PHP ein Cookie, das die Session-ID enthält, an den Webbrowser. In den nachfolgenden Anfragen sendet der Webbrowser das Session-ID-Cookie zurück an den Webserver, damit PHP die Daten basierend auf der Session-ID abrufen kann.

Erstellen einer neuen Session

Um eine neue Session zu erstellen, rufst du die Funktion session_start() auf:

Wenn session_start() zum ersten Mal ausgeführt wird, generiert PHP eine eindeutige Session-ID und übergibt diese in Form eines Cookies namens PHPSESSID an den Webbrowser. Wenn bereits eine Session existiert, prüft PHP das vom Browser gesendete PHPSESSID-Cookie. Die Funktion session_start() setzt dann die bestehende Session fort, anstatt eine neue zu erzeugen.

Da PHP das PHPSESSID-Cookie im Header der HTTP-Antwort sendet, musst du die Funktion session_start() vor jeder Anweisung aufrufen, die den Inhalt an den Webbrowser ausgibt. Andernfalls erhältst du eine Warnmeldung, die besagt, dass der Header nicht geändert werden kann, weil er bereits gesendet wurde. Dies ist eine gängige Fehlermeldung in PHP.

Wo PHP Session-Daten speichert

Standardmäßig speichert PHP die Session-Daten in temporären Dateien auf dem Webserver. Du kannst den Speicherort der temporären Dateien mit der Direktive session.save_path in der PHP-Konfigurationsdatei finden.

Die Funktion ini_get() gibt den Wert der Direktive session.save_path zurück:

echo ini_get(’session.save_path‘);

Oder du kannst die Funktion session_save_path() aufrufen:

echo session_save_path();

Typischerweise werden die Session-Daten im Ordner /tmp des Webservers gespeichert, z. B. /xampp/tmp .

So kannst du Session-Daten speichern und darauf zugreifen

Du kannst alle deine Session-Daten als Schlüssel-Wert-Paare in dem superglobalen Array $_SESSION[] speichern. Auf die gespeicherten Daten kann während der Lebensdauer einer Sitzung zugegriffen werden. Im folgenden Skript wird eine neue Session erstellt und es werden zwei Session-Variablen registriert:

Um auf die Session-Daten, die wir im obigen Beispiel gesetzt haben, von einer beliebigen anderen Seite derselben Web-Domain aus zuzugreifen, müssen wir lediglich die Session durch Aufruf von session_start() neu erzeugen und dann den entsprechenden Schlüssel an das assoziative Array $_SESSION übergeben:

Der PHP-Code im obigen Beispiel erzeugt die Ausgabe „Hallo Frank Karau“