сессия в PHP

Работа с сессиями

Вся работа с сессиями начинается с функции session_start. Эта функция создает сессию и обеспечивает к ней доступ (продолжает сессию). Если в начале кода не вызвана эта функция, работать с сессиями мы не сможем.

Для работы с сессиями используют глобальный массив $_SESSION. Если хотим что-то сохранить в сессии, просто создаем ячейку в этом массиве и присваиваем ей значение.

Для вывода — обращаемся к ячейке этого массива.

Рассмотрим на примере:

$_SESSION // в этом массиве все хранится
$_SESSION["user"] = "Max"; // сохранение данных в сессии
//Удаление сессии
unset($_SESSION["user"]);
session_destroy();
session_id();// id сессии
session_name();// имя сессии

По умолчанию сессии хранятся во временной директории операционной системы в папке Temp. Данные сюда попадают благодаря cookies. У каждой сессии есть свой id и name. Теоретически, если бы не было механизма сессии, мы могли бы сами его создать. За сессию все действия выполняют следующие объекты: 1) создается файл с сгенерированным случайным именем, 2) посылается cookie, 3) сериализуем данные в cookie, 4) когда идет обращение к cookie, вытаскиваются данные (unserialize), они зачитываются. Все эти действия за нас выполняет механизм сессий автоматически.

Существует необходимость убить сессию принудительно (как и в случае с cookie). Для этого есть функция session_destroy. Но здесь есть недостаток: файл сессии не удалится, он просто очистится, т.е. файл останется и его id тоже. Поэтому для полного удаления файла и его id нужно послать в коде удаление куки.

У сессии можно установить срок действия. По умолчанию стоит 20 минут от последнего запроса пользователя.




Добавить комментарий

Ваш e-mail не будет опубликован.