Управление сессиями Сессии &reftitle.intro; Поддержка сессий в PHP состоит в сохранении набора данных между последовательными доступами. Каждому посетителю сайта присваивается уникальный идентификатор, называемый идентификатором сессии (session id). Он хранится либо в cookie на стороне пользователя, либо передаётся через URL. Поддержка сессий помогает сохранять данные между запросами в суперглобальном массиве $_SESSION. Когда посетитель заходит на сайт, PHP автоматически (если для директивы session.auto_start установлено значение 1) или по запросу (явным образом через вызов функции session_start) проверяет, был ли конкретный идентификатор сессии отправлен вместе с запросом. Если это так, восстанавливается сохранённое ранее окружение. Если директива session.auto_start включена, то единственный способ поместить объекты в сессию — это загрузить определение класса этого объекта черер директиву auto_prepend_file, иначе придётся выполнить сериализацию (функцией serialize) и десериализацию (функцией unserialize) объекта вручную. Суперглобальная переменная $_SESSION (и все зарегистрированные переменные) сериализуются внутри PHP после выполнения запроса, используя обработчик сериализации, заданный в INI-опции session.serialize_handler. Зарегистрированные, но неопределённые переменные помечаются как неопределённые. При повторном доступе они не будут определены сессионным модулем, если пользователь заново не определит их. Поскольку сессионные данные сериализуются, переменные с типом resource не могут храниться в сессиях. Обработчики сериализации (php и php_binary) наследуют ограничения директивы register_globals. Поэтому нельзя использовать числовые или строковые индексы, содержащие специальные символы (| и !). Они приведут к ошибкам при завершении работы скрипта. У обработчика php_serialize такие ограничения отсутствуют. Заметьте, при работе с сессиями запись в сессии не создаётся до тех пор, пока переменная не будет зарегистрирована в суперглобальном массиве $_SESSION. Это правило будет применяться независимо от того, запускалась ли сессия функцией session_start. &reference.session.setup; &reference.session.constants; &reference.session.examples; &reference.session.upload-progress; &reference.session.security; &reference.session.reference; &reference.session.sessionhandler; &reference.session.sessionhandlerinterface; &reference.session.sessionidinterface; &reference.session.sessionupdatetimestamphandlerinterface;