Глава 30. Zend_Session

Содержание

30.1. Введение
30.2. Базовое использование
30.2.1. Учебные примеры
30.2.2. Итерация по пространствам имен
30.2.3. Методы доступа для пространств имен
30.3. Продвинутое использование
30.3.1. Старт сессии
30.3.2. Блокировка пространств имен
30.3.3. Время жизни пространства имен
30.3.4. Инкапсуляция сессий и контроллеры
30.3.5. Ограничение количества экземпляров Zend_Session_Namespace до одного на каждое пространство имен
30.3.6. Работа с массивами в пространствах имен
30.3.7. Использование сессий вместе с аутентификацией
30.3.8. Использование сессий с юнит-тестами
30.4. Общее управление сессиями
30.4.1. Zend_Session::setOptions()
30.4.2. Опции
30.4.3. regenerateId()
30.4.4. rememberMe(integer $seconds)
30.4.5. forgetMe()
30.4.6. sessionExists()
30.4.7. destroy(bool $remove_cookie = true, bool $readonly = true)
30.4.8. stop()
30.4.9. writeClose($readonly = true)
30.4.10. expireSessionCookie()
30.4.11. setSaveHandler(Zend_Session_SaveHandler_Interface $interface)
30.4.12. namespaceIsset($namespace)
30.4.13. namespaceUnset($namespace)
30.4.14. namespaceGet($namespace)
30.4.15. getIterator()
30.5. Теория

30.1. Введение

См. самую последнюю опубликованную версию этого документа. Приветствуются отзывы и предложения в списке рассылки fw-auth@lists.zend.com.

Для веб-приложений, написанных с использованием PHP, сессия (session) представляет собой логическую связь один-к-одному между постоянными данными на стороне сервера и определенным агентом пользователя (т.е. веб-броузером). Zend_Session помогает сохранять и управлять данными сессий, являющимися логическоим дополнением к данным в куках (cookie), между запросами одного и того же клиента. В отличие от данных, сохраняемых в куках, данные сессий не хранятся на клиентской стороне, они становятся доступными клиенту только если код серверной стороны добровольно предоставляет эти данные в ответ на запрос клиента. Пространства имен сессий предоставляют доступ к данным сессий с использованиием классических пространств имен, логически реализованным как именованные группы ассоциативных массивов.

Компонента Zend_Session является "оберткой" к расширению ext/session c интерфейсом для администрирования и управления, а также предоставляет API для Zend_Session_Namespace. Zend_Session_Namespace предоставляет стандартизированный, объектно-ориентированный интерфейс для работы с пространствами имен, сохраняемыми через стандартный механизм сессий PHP. Поддерживаются как анонимные, так и "авторизованные" пространства имен сессий. Zend_Auth, компонента ZF для аутентификации, использует Zend_Session_Namespace для хранения информации, связанной с аутентифицироанными пользователями, в пространстве имен "Zend_Auth". Поскольку внутри себя Zend_Session использует обычные PHP-функции, предназначенные для работы со сессиями, то используются соответствующие опции конфигурации PHP (см. http://www.php.net/session). Стандартный идентификатор сессии, сохраненный в куках или встроенный в URL, поддерживает ассоциацию между клиентом и постоянными данными сессии.

Используемый по умолчанию механизм хранения данных сессий не решает проблему поддержки ассоциации, если клиент может соединяться с любым сервером в кластере серверов, поскольку постоянные данные сессии сохраняются только на локальном сервере. Список дополнительных подходящих механизмов хранения будет предоставлен позднее. Члены сообщества приветствуют внесение предложений по механизмам хранения в списке рассылки fw-auth@lists.zend.com. Совместимый с Zend_Db механизм хранения уже был предложен в этом списке рассылки.