Введение

Поддержка сессий в PHP заключается в способе сохранения некоторых данных между несколькими последовательными доступами. Это позволяет наилучшим образом разработать индивдуальные приложения и увеличить привлекательность веб-сайта.

Каждому посетителю сайта присваивается уникальный идентификатор, называемый идентификатором сессии (session id). Он хранится либо в cookie на стороне пользователя, либо передается через URL.

Поддержка сессий позволяет регистрировать произвольное количество переменных с целью их сохранения между запросами. В тот момент, когда посетитель получает доступ к сайту, PHP проверяет (автоматически, если session.auto_start установлено в 1, или по запросу явным образом через вызов session_start() или неявным через session_register()), если определенный идентификатор сессии послан вместе с запросом. Если это так, восстанавливается сохраненное ранее окружение.

Предостережение

При включенном session.auto_start, единственным способом помещения объектов в сессию останется загрузка описаний класса с помощью auto_prepend_file. В противном случае придется выполнить сериализацию (serialize()) и десериализацию (unserialize()) объекта вручную.


Все зарегистрированные переменные сериализуются после выполнения запроса. Зарегистрированные, но неопределенные переменные помечаются как неопределенные. При последующих доступах они не определяются сессионным модулем пока пользователь заново не определит их.

Внимание

Некоторые типы данных не могут быть сериализованы и, таким образом, не могут храниться в сессии. Эти типы включают в себя переменные типа resource и объекты с циклическими ссылками (например, объекты, которые передают ссылку сами на себя через другой объект).


Замечание:

При работе с сессиями обратите внимание, что запись в сессии не создается прежде чем переменная регистрируется через функцию session_register() или через добавление нового ключа в суперглобальном массиве $_SESSION. Это правило действует вне зависимости от того, была ли сессия запущена с использованием функции session_start().

Замечание:

В PHP 5.2.2 была добавлена незадокументированная возможность, позволяющая хранить сессионный файлы в каталоге "/tmp" даже если open_basedir была включена и "/tmp" не был явным образом добавлен в список разрешенных путей. Эта особенность была убрана из PHP по состоянию на PHP 5.3.0.




Смотрите также:
Описание на ru2.php.net
Описание на php.ru