Реферат: Удаление переменных сессии
Кроме умения регистрировать переменные сессии (т.е. делать их глобальными на протяжении всего сеанса работы), полезно также уметь удалять такие переменные и сессию в целом.
Функция session_unregister(имя_переменной) удаляет глобальную переменную из текущей сессии (т.е. удаляет ее из списка зарегистрированных переменных). Если регистрация производилась с помощью $_SESSION ( $HTTP_SESSION_VARS для версии PHP 4.0.6 и более ранних), то используют языковую конструкцию unset(). Она не возвращает никакого значения, а просто уничтожает указанные переменные.
Где это может пригодиться? Например, для уничтожения данных о посетителе (в частности, логина и пароля) после его ухода с секретной странички. Если правильные логин и пароль сохранятся и окно браузера после посещения сайта не закрыли, то любой другой пользователь этого компьютера сможет прочитать закрытую информацию.
Пример 12.4. Уничтожение переменных сессии
В файл secret_info.php добавим строчку для выхода на главную страницу:
Пример 12.4a. secret_info.php
В Index.php уничтожим логин и пароль, введенные ранее:
Пример 12.4b. Index.php
Теперь, чтобы попасть на секретную страницу, нужно будет опять вводить логин и пароль.
Для того чтобы сбросить значения всех переменных сессии, можно использовать функцию session_unset();
Уничтожить текущую сессию целиком можно командой session_destroy(); Она не сбрасывает значения глобальных переменныхсессии и не удаляет cookies, а уничтожает все данные, ассоциируемые с текущей сессией.
Пример 12.5. Уничтожение сессии и глобальных переменных
В результате работы этого скрипта будут выведены три строки: в первой — массив с элементом test и его значением, а такжеидентификатор сессии, во второй — пустой массив и идентификатор сессии, в третьей — пустой массив. Таким образом, видно, что после уничтожения сессии уничтожается и ее идентификатор, и мы больше не можем ни регистрировать переменные, ни вообще производить какие-либо действия с сессией.