Kapitel 29. Zend_Session

Inhaltsverzeichnis

29.1. Einleitung
29.2. Grundlegende Verwendung
29.2.1. Übungs-Beispiele
29.2.2. Schleife über Session-Namespaces
29.2.3. Zurgriffsfunktionen für Session-Namespaces
29.3. Advanced Usage
29.3.1. Starting a Session
29.3.2. Locking Session Namespaces
29.3.3. Namespace Expiration
29.3.4. Session Encapsulation and Controllers
29.3.5. Limiting Instances of Zend_Session_Namespace to One Per Namespace
29.3.6. Working with Arrays in Namespaces
29.3.7. Using Sessions with Authentication
29.3.8. Using Sessions with Unit Tests
29.4. Global Session Management
29.4.1. Zend_Session::setOptions()
29.4.2. Options
29.4.3. Errors
29.4.4. regenerateId()
29.4.5. rememberMe(integer $seconds)
29.4.6. forgetMe()
29.4.7. sessionExists()
29.4.8. destroy(bool $remove_cookie = true, bool $readonly = true)
29.4.9. stop()
29.4.10. writeClose($readonly = true)
29.4.11. expireSessionCookie()
29.4.12. setSaveHandler(Zend_Session_SaveHandler_Interface $interface)
29.4.13. namespaceIsset($namespace)
29.4.14. namespaceUnset($namespace)
29.4.15. namespaceGet($namespace)
29.4.16. getIterator()
29.5. Theory

29.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 gespeichert in $_SESSION[], die durch Zend_Session verwaltet und individuell von den Zend_Session_Namespace Zugriffsobjekten verändert 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.

Zend_Session_Namespace erstellt eine Instanz eines Zugriffsobjektes für Namensräume aus $_SESSION[]. 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.