| |
| * Link führt ins Internet |
|
| |
Session-Management via PHP
|
|
Das Session-Management von PHP ist ein Mechanismus, welcher es ermöglicht unterschiedliche Anfragen eines Clients über einen Zeitraum hinweg in Beziehung zu setzen. Das es sich bei HTTP um ein verbindungsloses Protokoll handelt, bedeutet dies, dass Client und Server nach jedem Kommando den Prozess beenden und im weiteren Verlauf des Kommunikationsprozesses für jedes weitere Kommando einen erneuten Prozess starten. Hierbei besteht zwischen verschiedenen Anfragen desselben Clients keine Beziehung. Für die Abwicklung von Geschäftsprozesse ist dieses Verhalten von HTTP zunächst sehr hinderlich, wie Sie am Beispiel eines Online-Shops leicht nachvollziehen können: Der Kunde ruft die Startseite eines Online-Shop auf und erhält dort in aller Regel eine Kennnummer, über die er im Verlauf des gesamten Prozesses der Online-Bestellung identifiziert werden soll.
Anschliessend wechselt er in den Katalogbereich und füllt seinen Einkaufskorb. Möchte der Kunde die ausgewählten Artikel bestellen, wechselt er auf die entsprechende Seite und gibt dort Name, Anschrift und Bankverbindung an.
Im Verlauf dieses Prozesses hat der Kunde auf diese Weise in der Regel zwei bis drei verschiedene Seiten vom Server angefordert, der, wenn nicht entsprechende Massnahmen getroffen werden, aufgrund des verbindungslosen HTTP-Protokolls, die für den Bestellvorgang relevanten Informationen der jeweils zuvor besuchten Seite wieder vergessen hat.
Mit dem Session-Management sind die grundlegenden Funktionen, die für die Behandlung solcher, über mehrere HTTP-Requests hinweg zusammenhängen Transaktionen erforderlich sind, zum festen Bestandteil von PHP geworden.
Das Session-Management erstellt dabei automatisch die für die Behandlung von Sessions erforderlichen Session-IDs und kümmert sich um die Serialisierung und Speicherung der an die Session gebundenen Daten.
PHP nutzt zur Speicherung der Sessiondaten das Dateisystem des jeweiligen Webservers.
Bei der Speicherung werden die Session-Variablen von PHP automatisch serialisiert, d.h. in eine Zeichenkette umgewandelt.
Beim Start einer Session prüft PHP zunächst, ob eine gültige Session-ID existiert. Sollte das nicht der Fall sein, wird sie angelegt.
Wenn bereits eine gültige Session-ID vorhanden ist, werden die für diese Session vorgehaltenen Variablen im globalen Namensraum des Skripts verfügbar gemacht.
Durch Aufruf der Funktion session_register() können im weiteren Verlauf Session-Variablen erzeugt werden, um deren Speicherung sich PHP automatisch kümmert und die im Verlauf der gesamten Session referenziert werden können.
Mit Hilfe der Funktion session_unregister() können Session-Variablen wieder entfernt werden, was bei einer Online-Shop-Lösung erforderlich werden kann, wenn ein Kunde schon ausgewählte Artikel wieder aus seinem Warenkorb entfernt.
Zusammenfassung
. Unterschiedliche HTTP-Requests eines Clients können als Session behandelt werden.
. Für jeden Anwender wird eine verschlüsselte, zufallsgenerierte Session-ID erzeugt.
. Auf der Client-Seite wird die Session-ID entweder unter Verwendung von Cookies gespeichert.
. Sollte der Anwender die Verwendung von Cookies nicht gestattet, wird die Session-ID unter Verwendung von GET/POST-Variablen oder dem URL von Skript zu Skript weitergeleitet.
. Sessiondaten werden auf dem Server entweder in Textdateien, in Datenbanken oder im Prozessspeicher des Webservers gespeichert.
. Sofern PHP mit der configure-Option - enable-trans-id kompiliert wurde, erfolgt die Weiterleitung der Session-ID, für den Fall, dass Cookies nicht erlaubt sind, automatisch.
Konfiguration des Session-Moduls
Session-Funktionen in PHP
Weitergabe der Session-ID über Cookies
Weitergabe der Session-ID über GET/POST
Weitergabe der Session-ID über header()
Überprüfung des Verbindungsstatus
|
|
|
|
|
|
|