PHP — Сессии

PHP — Сессии

От автора: альтернативный способ сделать доступными данные на разных страницах всего веб-сайта — использовать PHP сессии. Сессия создает файл во временном каталоге на сервере, в котором хранятся зарегистрированные переменные сессии и их значения. Эти данные будут доступны для всех страниц сайта во время этого посещения.

Расположение временного файла определяется параметром с именем session.save_path в файле php.ini. Перед использованием любой переменной сессии убедитесь, что вы установили этот путь. Вот что происходит при открытии сессии,

Сначала PHP создает уникальный идентификатор для этой конкретной сессии, который представляет собой случайную строку из 32 шестнадцатеричных чисел, таких как 3c7foj34c3jj973hjkop2fc937e3443.

Файл-куки PHPSESSID автоматически отправляется на компьютер пользователя для хранения уникальной строки идентификации сессии.

На сервере в указанном временном каталоге автоматически создается файл, который содержит имя уникального идентификатора с префиксом sess_, т. е. sess_3c7foj34c3jj973hjkop2fc937e3443.

Когда PHP-скрипт хочет получить значение из переменной сессии, PHP автоматически получает уникальную строку идентификатора сессии из файла cookie PHPSESSID, а затем ищет во временном каталоге файл с этим именем и выполняет проверку путем сравнения обоих значений.

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

Открытие сессии PHP

Сессия PHP открывается с помощью функции session_start(). Эта функция сначала проверяет открытые сессии, если ни одна сессия не открыта, запускает ее. Рекомендуется поместить вызов session_start() в начало страницы. Переменные сеанса хранятся в ассоциативном массиве с именем $_SESSION[]. Доступ к этим переменным можно получить во время сессии.

В следующем примере мы сначала открываем сессию, затем регистрируется переменную с именем counter, которая увеличивается каждый раз, когда страница посещается во время сеанса. Используйте функцию isset(), чтобы проверить, установлена ли уже переменная сессии или нет. Поместите этот код в файл test.php и загрузите файл несколько раз, чтобы увидеть результат:

Этот код дает следующий результат: You have visited this page 1in this session.

Удаление сессии PHP

Сессия PHP может быть удалена с помощью функции session_destroy(). Для этой функции не нужны аргументы, и через один вызов можно удалить все переменные сеанса. Если вы хотите удалить одну переменную сессии, вы можете использовать функцию unset(), чтобы отключить ее. Ниже приводится пример, в котором отменяется одна переменная:

Вызов, который удаляет все переменные сессии:

Включение авто-сессии

Вам не нужно вызывать функцию start_session(), чтобы открыть сессию, при посещении пользователем сайта, если вы установите переменную session.auto_start в файле php.ini.

Сессии без файлов cookie

В некоторых случаях пользователь не разрешает хранить файлы cookie на своем компьютере. Поэтому существует другой способ отправки идентификатора сеанса в браузер.

В качестве альтернативы вы можете использовать константу SID, которая определяется, если сеанс запущен. Если клиент не отправил соответствующий сессии файл cookie, она выглядит следующим образом session_name = session_id. В противном случае она расширяется до пустой строки. Таким образом, вы можете вставлять ее в URL-адреса. В следующем примере показано как правильно регистрировать переменную и как правильно ссылаться на другую страницу с использованием SID.

Этот код дает следующий результат —

При выводе SID может использоваться htmlspecialchars() с целью противодействию атакам, связанным с перехватом сессий.

Источник: //www.tutorialspoint.com/

Редакция: Команда webformyself.

Метки:

Похожие статьи:

Комментарии Вконтакте: