Сессии являются простым способом хранения информации для отдельных пользователей с уникальным идентификатором сессии. Это может использоваться для сохранения состояния между запросами страниц. Идентификаторы сессий обычно отправляются браузеру через сессионный cookie и используются для получения имеющихся данных сессии. Отсутствие идентификатора сессии или сессионного cookie сообщает PHP о том, что необходимо создать новую сессию и сгенерировать новый идентификатор сессии.
Сессии используют простую технологию. Когда сессия создана, PHP будет либо получать существующую сессию, используя переданный идентификатор (обычно из сессионного cookie) или, если ничего не передавалось, будет создана новая сессия. PHP заполнит суперглобальную переменную $_SESSION сессионной информацией после того, как будет запущена сессия. Когда PHP завершает работу, он автоматически сериализует содержимое суперглобальной переменной $_SESSION и отправит для сохранения, используя сессионный обработчик для записи сессии.
По умолчанию PHP использует внутренний обработчик files
для сохранения сессий,
который установлен в INI-переменной session.save_handler.
Этот обработчик сохраняет данные на сервере в директории, указанной в
конфигурационной директиве session.save_path.
Сессии могут запускаться вручную с помощью функции session_start()
и, если директива session.auto_start установлена в
1
, сессия автоматически запустится, когда PHP посылает любые данные
в буфер вывода.
Сессия обычно завершает свою работу, когда PHP заканчивает исполнять скрипт, но может быть завершена и вручную с помощью функции session_write_close().
Пример #1 Регистрация переменной с помощью $_SESSION.
<?php
session_start();
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
} else {
$_SESSION['count']++;
}
?>
Пример #2 Отмена объявления переменной с помощью $_SESSION.
<?php
session_start();
unset($_SESSION['count']);
?>
НЕ ОЧИЩАЙТЕ $_SESSION целиком, испольуя unset($_SESSION), так как это отключит возможность регистрации сессионных переменных через суперглобальную переменную $_SESSION.
Вы не можете использовать ссылки в сессионных переменных, так как не существует реального способа восстановления ссылки к другой переменной.