Rozdział 30. Zend_Session

Spis treści

30.1. Wprowadzenie
30.2. Podstawowe użycie
30.2.1. Przykłady
30.2.2. Iteracja poprzez przestrzenie nazw sesji
30.2.3. Metody dostępowe do przestrzeni nazw sesji
30.3. Użycie zaawansowane
30.3.1. Rozpoczynanie sesji
30.3.2. Blokowanie przestrzeni nazw sesji
30.3.3. Namespace Expiration
30.3.4. Session Encapsulation and Controllers
30.3.5. Limiting Instances of Zend_Session_Namespace to One Per Namespace
30.3.6. Working with Arrays in Namespaces
30.3.7. Using Sessions with Authentication
30.3.8. Użycie sesji z testami jednostkowymi
30.4. Global Session Management
30.4.1. Zend_Session::setOptions()
30.4.2. Options
30.4.3. Errors
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. Teoria

30.1. Wprowadzenie

Zobacz najbardziej aktualną opublikowaną wersję tego dokumentu. Ponadto zespół Zend Framework Auth bardzo docenia twój wkład w naszą listę email: fw-auth@lists.zend.com

W aplikacjach web używających PHP, a sesja reprezentuje logiczne połączenie jeden-do-jednego pomiędzy danymi o stanie użytkownika znajdującymi się na serwerze, a konkretną aplikacją użytkownika (np. przeglądarka stron internetowych). Zend_Session pomaga w zarządzaniu i zabezpieczaniu danych sesji, które są logicznym dopełnieniem danych w ciasteczku, pomiędzy wieloma żądaniami do serwisu przez tego samego klienta. W przeciwieństwie do danych z ciasteczka, dane sesji nie są przechowywane po stronie klienta i są one dostępne dla klienta tylko wtedy, gdy kod po stronie serwera dobrowolnie udostępni dane poprzez obiekt odpowiedzi na żądanie klienta. Dla celów tego komponentu oraz dokumentacji, dane sesji odnoszą się do danych przechowywanych po stronie serwera w tablicy $_SESSION[], zarządzanych przez Zend_Session, oraz indywidualnie manipulowanych przez obiekty dostępowe Zend_Session_Namespace. Przestrzenie nazw sesji zapewniają dostęp do danych sesji używając klasycznych przestrzeni nazw implementowanych logicznie jako nazwane grupy asocjacyjnych tablic, o kluczach będących łańcuchami znaków. (analogicznie jak tablice PHP).

Zend_Session_Namespace tworzy instancje obiektów dostępowych dla przestrzeni nazw będących wycinkami $_SESSION[]. Komponent Zend_Session wraps the existing PHP ext/session with an administration and management interface, as well as providing an API for Zend_Session_Namespace to persist session namespaces. Zend_Session_Namespace zapewnia ustandaryzowany zorientowany obiektowo interfejs do pracy z przestrzeniami nazw istniejącymi wewnątrz standardowego mechanizmu sesji PHP. Wspierane są zarówno przestrzenie nazw dla anonimowych użytkowników, jak i dla zalogowanych. Zend_Auth, komponent autentykacji w ZF używa Zend_Session_Namespace do przechowywania informacji związanych z autentykowanymi użytkownikami w przestrzeni nazw "Zend_Auth". Z tego względu, że Zend_Session używa normalnych wewnętrznych funkcji modułu sesji, oraz umożliwia użycie wszystkich znanych opcji konfiguracyjnych i ustawień (zobacz http://www.php.net/session), a dodatkowo umożliwia dostęp za pomocą zorientowanego obiektowo interfejsu, to użycie tego modułu jest przykładem dobrej praktyki programowania, a także gładko integruje się z Zend Framework. Zatem standardowy identyfikator sesji PHP przechowywany albo w ciasteczku klienta, albo dołączony do adresów URL, umożliwia połączenie klienta oraz danych stanu sesji.

Domyślna obsługa zapisu sesji nie rozwiązuje problemu zarządzania tym powiązaniem, gdy klient może połączyć się z dowolnym serwerem w klastrze serwerów, ponieważ dane stanu sesji są zapisywane jedynie na danym serwerze z tego klastra. Dodatkowe odpowiednie możliwości obsługi zapisu będą zapewnione, gdy będą dostępne. Namawiamy członków społeczności aby wysyłali propozycje możliwości obsługi zapisu na listę fw-auth@lists.zend.com. Obsługa zapisu kompatybilna z Zend_Db została opisana na liście.