Kapitel 30. Zend_Session

Inhaltsverzeichnis

30.1. Einführung
30.2. Grundsätzliche Verwendung
30.2.1. Übungs Beispiele
30.2.2. Session Namensräume wiederholen
30.2.3. Zugriffsfunktionen für Session Namensräume
30.3. Gehobene Benutzung
30.3.1. Starten einer Session
30.3.2. Gesperrte Session Namensräume
30.3.3. Verfall von Namensräumen
30.3.4. Kapseln von Sessions und Kontroller
30.3.5. Limitieren von Zend_Session_Namespace Instanzen auf eine pro Namensraum
30.3.6. Arbeiten mit Arrays in Namensräumen
30.3.7. Verwenden von Session mit Authentifizierung
30.3.8. Verwenden von Sessions mit Unit Tests
30.4. Globales Session Management
30.4.1. Zend_Session::setOptions()
30.4.2. Optionen
30.4.3. Fehler
30.4.4. regenerateId()
30.4.5. rememberMe(integer $seconds)
30.4.6. forgetMe()
30.4.7. sessionExists()
30.4.8. destroy(bool $remove_cookie = true, bool $readonly = true)
30.4.9. stop()
30.4.10. writeClose($readonly = true)
30.4.11. expireSessionCookie()
30.4.12. setSaveHandler(Zend_Session_SaveHandler_Interface $interface)
30.4.13. namespaceIsset($namespace)
30.4.14. namespaceUnset($namespace)
30.4.15. namespaceGet($namespace)
30.4.16. getIterator()
30.5. Theorie

30.1. Einführung

Hier kann die zuletzt veröffentlichte Version dieses Dokuments gefunden werden. Das Zend Framework Auth Team begrüsst Feedback und Beiträge in der Mailing Liste: fw-auth@lists.zend.com

In Web Anwendungen die mit PHP geschrieben sind, repräsentiert eine Session eine logische Eins-zu-Eins Verbindung zwischen fixen Daten auf dem Server und einem bestimmten Benutzer Client (z.B. einem Web Browser). Zend_Session hilft beim Verwalten und Aufbewahren von Session Daten, einer logischen Verbindung von Cookie Daten über mehrere Seitenaufrufe hinweg durch den gleichen Client. Anders als Cookie Daten, werden Session Daten nicht beim Client gespeichert und stehen diesem nur dann zur Verfügung wenn der Server-seitige Sourcecode diese Daten freiwillig zur Verfügung stellt und diese vom Client angefragt werden. Innerhalb dieser Komponente und der Dokumentation bezeichnen Session Daten die Server-seitigen Daten welche in $_SESSION[] gespeicher, durch Zend_Session verwaltet und durch Zend_Session_Namespace Zugriffsobjekte individuell verändert werden. Session Namensräume gestatten den Zugriff auf Session Daten durch Verwendung klassischer Namensräume welche durch logische, namentlich gruppierte, assoziative Arrays, dessen Schlüssel mit Zeichenketten benannt sind (ähnlich wie bei normalen PHP Arrays), implementiert sind.

Zend_Session_Namespace erzeugt Instanzen von Zugriffsobjekten für benannte Abschnitte von $_SESSION[]. Die Zend_Session Komponente wrappt die bestehende PHP Erweiterung ext/session mit einem Administrations und Management Interface sowie einer API für Zend_Session_Namespace um Session Namensräume zu erlauben. Zend_Session_Namespace bietet ein standardisiertes, objekt-orientiertes Interface für das Arbeiten mit Namensräumen welche innerhalb von PHP's Standard Session Mechanismum bereitgehalten werden. Es werden sowohl anonyme als auch "login" Session Namensräume unterstützt. Zend_Auth, die Authentifizierungs-Komponente des ZF verwendet Zend_Session_Namespace um einige Informationen, welche mit den authentifizierten Benutzern verbunden sind, innerhalb des "Zend_Auth" Namensraums zu speichern. Da Zend_Session intern die normalen PHP ext/session Funktionen verwendet, sind alle bekannten Konfigurationsoptionen und Einstellungen vorhanden (siehe http://www.php.net/session), mit dem Bonus und Komfort durch ein Objekt-orientiertes Interface und unterstützt standardmäßig beides, sowohl die beste Lösung als auch eine reibungslose Integration innerhalb des Zend Frameworks. Deshalb hält eine standardmäßige PHP Session ID, welche entweder in einem Client-Cookie gespeichert oder in einer URL integriert ist, die Verbindung zwischen Client und bestehenden Sessiondaten aufrecht.

Das standardmäßige ext/session Speichermodul löst das Problem des Verwaltens dieser Verbindung nicht, wenn sich ein Client zu einem beliebigen Server aus einem Cluster von Servern verbinden kann, da Sessiondaten nur im lokalen Server gespeichert werden. Eine Liste von zusätzlichen, geeigneten Speichermodule wird, sobald Sie vorhanden ist, zur Verfügung gestellt. Mitglieder der Community werden ermutigt Speichermodule vorzuschlagen und an die fw-auth@lists.zend.com Mailing-Liste zu senden. Ein Zend_Db kompatibles Speichermodul wurde schon in der Liste veröffentlicht.