Kapitel 25. Zend_Session

Inhaltsverzeichnis

25.1. Einleitung
25.2. Grundlegende Verwendung
25.2.1. Übungs-Beispiele
25.2.2. Schleife über Session-Namespaces
25.2.3. Zurgriffsfunktionen für Session-Namespaces
25.3. Advanced Usage
25.3.1. Starting a Session
25.3.2. Locking Session Namespaces
25.3.3. Session Encapsulation and Controllers
25.3.4. Limiting Instances of Zend_Session_Namespace to One Per Namespace
25.3.5. Working with Arrays in Namespaces
25.3.6. Using Sessions with Authentication
25.4. Global Session Management
25.4.1. Zend_Session::setOptions()
25.4.2. Options
25.4.3. regenerateId()
25.4.4. rememberMe(integer $seconds)
25.4.5. forgetMe()
25.4.6. sessionExists()
25.4.7. destroy(bool $remove_cookie = true, bool $readonly = true)
25.4.8. stop()
25.4.9. writeClose($readonly = true)
25.4.10. expireSessionCookie()
25.4.11. setSaveHandler(Zend_Session_SaveHandler_Interface $interface)
25.4.12. namespaceIsset($namespace)
25.4.13. namespaceUnset($namespace)
25.4.14. namespaceGet($namespace)
25.4.15. getIterator()
25.5. Theory

25.1. Einleitung

Siehe die aktuellste veröffentlichte Version dieses Dokuments . Das Zend-Framework-Auth-Team freut sich außerdem über jegliches Feedback und Beiträge auf der Mailing-Liste: fw-auth@lists.zend.com

Bei einer in PHP geschriebenen Web-Applikation steht eine Session für eine logische Eins-Zu-Eins-Verbindung zwischen auf dem Server beständig gehaltenen Daten und einem bestimmten Client (zum Beispiel einem Web-Browser). Zend_Session hilft beim Verwalten und Aufbewahren von Session-Daten, der logischen Ergänzung zu Cookie-Daten, über mehrere Seitenaufrufe eines Clients hinweg. Anders als die in Cookies gespeicherten Daten werden die Session-Daten nicht client-seitig gespeichert und stehen dem Client nur zur Verfügung, wenn das server-seitige Script freiwillig die Daten durch eine Antwort auf eine Anfrage des Clients verfügbar macht. Im Umfeld der Zend_Session-Komponente und in dieser Dokumentation steht der Begriff Session-Daten für server-seitige Daten, die durch Zend_Session verwaltet werden. Session Namensräume stellen einen Zugriff auf die Sessiondaten unter Verwendung klassischer Namensräume, die logisch als benannte Gruppen mit assoziativen Arrays mit Schlüsselstrings (ähnlich wie normale PHP Arrays) implementiert wurden.

Die Zend_Session ist ein Wrapper für das bestehende PHP ext/session mit einem Administrations- und Verwaltungsinterface sowie der Bereitstellung einer API für Zend_Session_Namespace, um Session Namensräume beizubehalten. Zend_Session_Namespace stellt eine standardisierte, objektorientierte Schnittstelle für den Umgang mit Namensräumen, die innerhalb des Standard Session Mechanismus von PHP bereit gehalten werden. Unterstützung besteht sowohl für anonymen und authentifizierten Sessions. Zend_Auth, die Authentifizierungs-Komponente des Zend Frameworks, verwendet Zend_Session_Namespace, um einige Informationen im Zusammenhang mit authentifizieren Benutzer im "Zend_Auth" Namensraum zu speichern. Da Zend_Session intern die normalen ext/session Funktionen von PHP verwendet, sind alle regulären Konfigurations-Optionen und -Einstellungen nutzbar (siehe http://www.php.net/session ), mit dem Bonus des Komforms über ein objektorientiertes Interface and Standardwerte, um sowohl die beste Lösung und eine reibungslose Integration in das Zend Framework bereitzustellen. Eine Standard Session-Id, entweder in einem Client Cookie oder den URLs gespeichert, hält also die Verbindung zwischen einem Client und bestehenden Session-Daten aufrecht.

Der standardmäßig vorhandene ext/session save handler löst nicht das Problem, diese Verbindung in Szenarien aufrecht zu erhalten, in denen ein Client sich mit einem beliebigen Server eines Server-Clusters verbinden kann, da die bestehenden Session-Daten nur lokal auf einem Server gespeichert werden. Eine Liste zusätzlicher, geeigneter Speicher-Module wird zur Verfügung gestellt werden wenn diese verfügbar sind. Mitglieder der Community werden ermutigt, Speicher-Module in der fw-auth@lists.zend.com Liste vorzuschlagen und einzusenden. Ein Zend_Db kompatibles Speicher-Modul wurde in der Liste bereits veröffentlicht.