|
Basic usage
Если register_globals выключена, только члены глобального ассоциативного массива $_SESSION могут быть зарегистрированы в качестве сессионной переменной. Переменные восстановленной сессии могут быть доступны только в массиве $_SESSION. Использование $_SESSION (или $HTTP_SESSION_VARS в PHP 4.0.6 и младше) рекомендуется для увеличения безопасности и повышения читаемости кода. При использовании $_SESSION нет необходимости в использовании функций session_register(), session_unregister() и session_is_registered(). Сессионные переменные доступны как и все прочие переменные. Пример #1 Регистрация переменную с помощью $_SESSION.
<?php Пример #2 Дерегистрация переменной с помощью $_SESSION при выключенной register_globals.
<?php
Предостережение
НЕ ОЧИЩАЙТЕ $_SESSION целиком, испольуя unset($_SESSION), так как это отключит возможность регистрации сессионных переменных через суперглобальную переменную $_SESSION. Внимание
Вы не можете использовать ссылки в сессионных переменных, так как не существует реального способа восстановления ссылки к другой переменной. Если register_globals включена, то любая глобальная переменная может быть зарегистрирована в качестве сессионной. При перезапуске сессии эти переменные будут восстановлены в соответствующие им глобальные переменные. Ввиду того, что PHP должен знать, какие именно глобальные переменные зарегистрированы в качестве сессионных, пользователям следует регистрировать переменные с использованием функции session_register(). Этого можно избежать при использовании только $_SESSION. Предостережение
В версии PHP 4.3.0 и более ранних при использовании $_SESSION и выключенной register_globals, не пользуйтесь session_register(), session_is_registered() или session_unregister(). Рекомендуется выключить register_globals с точки зрения безопасности и производительности. Если register_globals включена, то глобальные переменные и записи в $_SESSION будут автоматически ссылаться на одни и те же значения, которые были зарегистрированы в предыдущем экземпляре сессии. Тем не менее, если переменная зарегистрирована в $_SESSION, то глобальная переменная будет доступна начиная со следующего запроса. В версии PHP 4.2.3 и более ранних присутствует дефект. Если зарегистрировать новую сессионную переменную, используя session_register(), то переменная в глобальной области и запись в $_SESSION не будут ссылаться на одно и то же значение до тех пор, пока не будет выполнен следующий session_start(). Это значит, что изменение вновь зарегистрированной глобальной переменной не будет отражено в $_SESSION. Это поведение было исправлено в PHP 4.3.0. |
|