next up previous contents index
Next: Das Session-Konzept der Workflow-Anwendung Up: Sessions Previous: HTTP und Zustandsverwaltung

Das Session-Konzept von PHP

PHP bietet ab der Version 4 ein Session-Konzept, das eine Zustandsverwaltung ermöglicht. Die Zustandsvariablen und ihre Werte werden zwischen den Requests linearisiert in einer Datei gespeichert. Für jede Session wird eine solche Datei angelegt. Standardmäßig werden diese Dateien im Verzeichnis '/tmp' abgelegt. Mit dem Parameter 'session.save_path' in der PHP-Konfigurationsdatei 'php.ini' kann der Speicherort geändert werden. Man kann sogar eigene Routinen für das Speichern und Wiederherstellen von Sessions erstellen ('session.save_handler'). Damit könnten die Session-Variablen auch in einer Datenbank verwaltet werden. In der Datei 'php.ini' kann mit Hilfe der Parameter 'session.gc_maxlifetime' und 'session.gc_probability' die Gültigkeitsdauer einer Session beeinflusst werden.

Die Session-ID kann mit Hilfe eines Cookies beim Anwender gespeichert werden. Dabei wird dieses Cookie nur im Speicher erzeugt und beim Beenden des Browser gelöscht. Unterstützt der Browser keine Cookies vereinfacht PHP das Einbinden der ID in die Links bzw. Formulare durch die Stringkonstante 'SID'. Diese Konstante hat dann die Form 'session_name=session_id'. Wenn der Browser Cookies erlaubt, ist die Konstante leer.

Eine Variable muss explizit als Session-Variable deklariert werden. Dazu dient die PHP-Funktion 'session_register'. Bei einem Request werden die zur ID gehörenden Variablen wiederhergestellt, sobald die Session mit den Funktionen 'session_start' explizit oder 'session_register' implizit gestartet wird. Da die Session-ID unter Umständen über ein Cookie verwaltet wird und Cookies Bestandteil des HTTP-Headers sind, muss darauf geachtet werden, dass die Session gestartet wird, bevor das PHP-Skript eine HTML-Ausgabe erzeugt.

Auf die Variablen kann in einem PHP-Skript über deren Variablennamen zugegriffen werden, sofern in der PHP-Konfigurationsdatei 'php.ini' die Variable 'register_globals' auf 'On' steht. Ist der Wert 'Off', so können die Session-Variablen nur über das Array 'HTTP_SESSION_VARS' (indiziert mit den Variablennamen) benutzt werden. Leider ist der Schalter 'register_globals' relativ grob, da er sich nicht nur auf die Session-Variablen, sondern auf alle anderen externen Variablen ('HTTP_GET_VARS' etc.) bezieht. Für die Workflow-Anwendung muss dieser Schalter auf 'On' stehen. Wichtig ist außerdem die Reihenfolge, in der die externen Variablen zur Verfügung gestellt werden. Die Session-Variablen werden als letztes abgearbeitet, so dass eine Variable, die beispielsweise bereits aus einen HTTP-GET-Request existiert, durch den Wert einer Session-Variable überschrieben werden kann, sofern sie den selben Namen benutzen. Auf den Wert aus dem GET-Request kann dann nur noch über das Array 'HTTP_GET_VARS' zugegriffen werden.


next up previous contents index
Next: Das Session-Konzept der Workflow-Anwendung Up: Sessions Previous: HTTP und Zustandsverwaltung
Copyright Munich Network Management Team