PHP сессии

Введение

Мы уже умеем сохранять информацию для пользователя между посещениями страницы с помощью кук. Но зачем нам ещё и сессии?

Сессии, они же сеансы, это, по сути, просто удобная обёртка над куками. Они также позволяют хранить данные пользователя, но с некоторыми отличиями. Доступный объём для хранения информации намного больше.

Сессии представляют набор переменных, которые хранятся на сервере (либо часть на сервере, а часть – в 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['user']['id'] = $id;

Сохранение данных в сессии

Запустим сессию и сохраним в ней значения:

<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();

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *