Сессии представляют набор переменных, которые хранятся на сервере (либо часть на сервере, а часть - в cookie браузера) и которые относятся только к текущему пользователю. В какой-то степени сессии являются альтернативой кукам в плане сохранения данных о пользователе.
Для запуска сессии необходимо вызвать функцию session_start(). Она должна вызываться до отправки ответа пользователю:
<php session_start(); ?>
При запуске сессии с помощью функции session_start()
, если пользователь первый раз заходит на сайт, PHP назначает ему уникальный идентификатор сессии. Этот идентификатор с
помощью cookie, которые по умолчанию называются "PHPSESSID", сохраняется в браузере пользователя. С помощью этого идентификатора пользователь
ассоциируется с данными сессии. Если для пользователя уже установлена сессия, то данная функция продлевает текущую сессию вместо установки новой.
С помощью специальных функций мы можем получить идентификатор сессии:
session_start(); echo session_id(); // идентификатор сессии echo session_name(); // имя - PHPSESSID
То же значение мы могли бы получить, обратившись к cookie напрямую:
echo $_COOKIE["PHPSESSID"];
Затем для сохранения или получения данных в сессии надо использовать глобальный ассоциативный массив $_SESSION. Сохранение переменной в сессии:
$_SESSION["имя_переменной"] = значение;
Получение сохраненного значения:
$переменная = $_SESSION["имя_переменной"];
Запустим сессию и сохраним в ней значения:
<php session_start(); $_SESSION["name"] = "Sam"; $_SESSION["age"] = 41; echo "Данные сохранены в сессии"; ?>
После установки сессии в браузере мы сможем заметить установку специальной куки, которая по умолчанию называется "PHPSESSID":
Теперь получим эти значения и выведем на страницу:
session_start(); if (isset($_SESSION["name"]) && isset($_SESSION["age"])) { $name = $_SESSION["name"]; $age = $_SESSION["age"]; echo "Name: $name <br> Age: $age"; }
Сессия уничтожается с закрытием браузера, однако мы также можем программно удалить либо какие-то отдельные, либо все данные сессии.
Для удаления одной переменной из сессии применяется функция unset():
session_start(); unset($_SESSION["age"]); // удаляем из сессии переменную "age"
Удалить все данные сессии можно с помощью функции session_destroy():
session_start(); session_destroy();