Введение

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

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

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

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

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

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

Внимание

Так как сессионные данные сериализуются, то переменные с типом resource не могут храниться в сессиях.

Замечание:

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

Замечание:

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


Участник рейтинга Тэглайн 2010