Что такое сессии в PHP и для чего они нужны

Сессии — способ хранения данных пользователя на протяжении сеанса его работы с web-приложением. Их применяют для того, чтобы хранить временную информацию, которую нет нужды сохранять на постоянной основе. Такими данными могут быть, например, информация о том, залогинен ли пользователь в системе, если нужно, чтоб через некоторое время, а также после закрытия браузера он автоматически разлогинивался.

Работает это следующим образом: чтобы создать сессию, программист должен использовать функцию session_start. Кроме этого, сессия может быть создана автоматически при запуске скрипта (соответственно, при заходе пользователя на страницу). Для этого можно установить директиву PHP session.auto_start. Когда создается сессия, пользователю передаётся cookie — специальная запись, которая некоторое время хранится в его браузере, а потом удаляется. Для cookie можно задавать время, через которое он будет автоматически удален. В cookie записывается идентификатор сессии для данного пользователя. Сама же сессия хранится на сервере. Есть несколько способов ее хранения. Базовым способом является запись сессии в файл. Но FrameWorks зачастую позволяют использовать и другие — например, сохранять её в базе данных.

В сессию можно записывать различные данные. Для записи и чтения из сессии используют суперглобальный массив $_SESSION, либо дополнительные возможности фреймворков. Этот массив называется суперглобальным по той причине, что он имеет глобальную область видимости, то есть его можно использовать из любого места кода — хоть изнутри функции, хоть из метода класса. И всё это без дополнительных действий. Он является ассоциативным. Производить запись в сессию можно, соответственно, по ключу. Ключом может являться строка текста. Например, сделать это можно так:

$_SESSION[‘user_id’]=3456;
$_SESSION[‘user_name’]=’Вася’;

Записав сюда что-либо, эти данные можно использовать не только на протяжении работы скрипта, как обычные переменные, но и при последующих его запусках. В том числе и при запусках других скриптов с того же сайта. Это позволяет удобно хранить значения переменных между запусками. Чтение значений из сессии происходит обратным образом:

$user_id=$_SESSION[‘user_id’];
$user_name=$_SESSION[‘user_name’];

Удалить данные из сессии можно с помощью PHP-команды unset:

unset($_SESSION[‘user_id’]);

По умолчанию сессии хранятся 24 минуты, если не закрывать браузер, а также удаляются при его закрытии. Но эти параметры можно изменить. Это время можно изменить через файл настроек PHP. Для этого там надо установить такие записи:

php_value session.gc_maxlifetime 172800
php_value session.cookie_lifetime 172800

172800 — время хранения сессии в секундах. В данном случае это 2 суток. Вместо этого числа можно вписать требуемое Вам значение. Эти же действия можно выполнить прямо из скрипта без изменения в файле настроек с помощью команды ini_set:

ini_set(‘session.gc_maxlifetime’, 172800);
ini_set(‘session.cookie_lifetime’, 172800);

Однако, стоит помнить, что механизм работы сессий предполагает, что они будут автоматически удалены после закрытия браузера.

Уникальность ADVEGO - 100%

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