Сессии в PHP

Поговорим о сессиях, сеансах или sessions в языке программирования PHP, как создавать, как завершать и как использовать.

Что такое сессия?

Сессия — это глобальная переменная, хранящаяся на сервере. Каждой сессии присваивается уникальный идентификатор, который используется для получения сохраненных значений.

При создании сессии на компьютере пользователя сохраняется файл cookie, содержащий уникальный идентификатор сессии, который возвращается при каждом запросе к серверу. Если браузер клиента не поддерживает cookies, уникальный идентификатор сессии php отображается в URL.

Примечание. Про сессии подробнее можно почитать в официальной документации на этой странице.

Сессии способны хранить относительно большие данные по сравнению с cookies. Значения сессии автоматически удаляются при закрытии браузера. Если вы хотите хранить значения постоянно, то вам следует хранить их в базе данных.

Как и переменная массива $_COOKIE, переменные сессии хранятся в переменной массива $_SESSION. Как и cookies, сессия должна быть запущена перед любыми HTML-тегами.

Зачем и когда использовать сессии?

Вы хотите более надежно хранить на сервере важную информацию, например такую как идентификатор пользователя, где злоумышленники не смогут ее подделать.

Вы хотите передавать значения с одной страницы на другую.

Вам нужна альтернатива cookies в браузерах, которые не поддерживают cookies.

Вы хотите хранить глобальные переменные эффективным и более безопасным способом по сравнению с передачей их в URL.

Вы разрабатываете приложение, такое как корзина для покупок, которое должно временно хранить информацию объемом более 4 КБ.

Создание сессии

Чтобы создать сессию, необходимо сначала вызвать функцию PHP session_start, а затем сохранить значения в переменной массива $_SESSION.

Допустим, мы хотим узнать количество загрузок страницы, для этого мы можем использовать сессию.

Приведенный ниже код показывает, как создавать и извлекать значения из сессий:

<?php

session_start(); // старт PHP сессии 

if(isset($_SESSION['page_count']))
{
     $_SESSION['page_count'] += 1;
}
else
{
     $_SESSION['page_count'] = 1;
}
echo 'Вы посетитель под номером ' . $_SESSION['page_count'];

Код выведет:

Вы посетитель под номером 1

Уничтожение переменных сессии

Функция session_destroy() используется для уничтожения всех переменных сессии php.

Если вы хотите уничтожить только отдельный элемент сессии, вы используете функцию unset().

В приведенном ниже коде показано, как использовать оба метода.

<?php

session_destroy(); // уничтожить всю сессию

unset($_SESSION['product']); // уничтожить элемент сессии "product" 

session_destroy удаляет все данные сессии, включая куки, связанные с сессией.

unset удаляет только отдельные переменные сессии. Остальные данные остаются нетронутыми.

Сессии — это как глобальные переменные, хранящиеся на сервере. Каждой сессии присваивается уникальный идентификатор, который используется для отслеживания переменных для пользователя.

И куки и сессии должны быть запущены до того, как в браузер будут отправлены какие-либо HTML-теги.

Опубликовано 12 сентября 2022 в 00:10
Обновлено 9 января 2024 в 14:12
Категория: Блог
Теги: