Сессии

Последнее обновление: 21.03.2021

Сессии представляют набор переменных, которые хранятся на сервере (либо часть на сервере, а часть - в 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":

Сессии в PHP и session_start и $_SESSION

Получение данных сессии

Теперь получим эти значения и выведем на страницу:

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();
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850