Отправляет email-рассылки с помощью сервиса Sendsay

PHP 5: Новые возможности.

  Все выпуски  

ZEND_FRAMEWORK: Класс Zend_Session


PHP 5: Новые возможности.

В веб приложениях, написанных на PHP, сессия (session) представляет собой логическое соединение между сервером и клиентом (броузером). Класс Zend_Session помогает управлять и сохранять сессионные данные. В отличие от куков (cookies), сессия сохраняется на стороне сервера, а не на стороне клиента.

К сессионным данным применима концепция пространства имен (namespace), что становится возможным благодаря классу Zend_Session_Namespace. Если необходимо манипулировать только одним пространством имен, работа может производиться в пространстве «по умолчанию».


Чтобы избежать конфликта имен, рекомендуется использовать индивидуальное пространство имен для однотипных данных.

$foo = new Zend_Session_Namespace('Foo');
Перебор сессионных данных в текущем пространстве имен может быть произведен при помощи стандартной контрольной структуры foreach.
foreach ($foo as $index => $value) { /* ... */ }

Начало сессии. Глобальное использование сессий со всеми запросами в пределах приложения можно при помощи статического метода Zend_Session::start(), который следует вызывать в файле первоначальной загрузки. «Локальные» сессии могут быть начаты в любом месте приложения путем создания нового объекта класса Zend_Session_Namespace.

Zend_Session::start();  // in the bootstrap file
$default = new Zend_Session_Namespace;  //
default namespace
$foo = new Zend_Session_Namespace('Foo');
[Внимание]Внимание

При использовании Zend_Session не следует включать директиву session.auto_start или вызывать функцию session_start() напрямую.

Запирание пространства имен. Данные в текущем пространстве имен могут быть заперты для предотвращения их нежелательного изменения с помощью метода lock(). После запирания они все еще доступны в режиме «только чтение». Запирание действует только на протяжении текущего запроса. Запирание может быть отменено с помощью метода unlock(). Проверить, заперты ли данные в текущем пространстве имен, можно с помощью метода isLocked().

<?php

$foo->lock();

if ($foo->isLocked()) {
    $foo->unlock();
}
        

Продолжительность жизни. Данным в текущем пространстве имен может быть назначено время жизни, по истечении которого они считаются просроченными (expired). Это время может исчисляться в секундах (seconds) или т. н. «прыжках» (hops) - успешных активациях пространства имен с помощью создания нового объекта класса Zend_Session_Namespace. Помимо всего пространства, время жизни может быть установлено и для отдельных входящих в него данных.

<?php

// all data will be expired in 10 seconds
$foo->setExpirationSeconds(10);
        
<?php

// the bar variable will be expired in 5 hops
$foo->setExpirationHops(5, 'bar');
        

Поведение сессий может быть изменено с помощью вызова ряда статических методов класса Zend_Session.

Метод Zend_Session::setOptions(). Настраивает поведение сессий, используя переданный массив конфигурационных опций.

Метод Zend_Session::regenerateId(). Изменяет идентификатор сессии, способствуя повышению безопасности приложения. Может быть вызван, например, в файле первоначальной загрузки. Не следует вызывать этот метод одновременно с методом rememberMe().

Метод Zend_Session::rememberMe(). Позволяет запомнить сессионные данные (обычно сессия уничтожается после закрытия пользователем броузера). Продолжительность запоминания в секундах передается в качестве параметра.

Метод Zend_Session::forgetMe(). Нейтрализует действие метода Zend_Session::rememberMe().

Метод Zend_Session::sessionExists(). Позволяет выяснить, существует ли уже сессия для данного броузера и запроса.

Метод Zend_Session::destroy(). Разрушает все данные, ассоциированные с текущей сессией.

Created with DocBook


В избранное