Скриптовый язык PHP. Механизм сессий

Любая сессия открывается с помощью функции session_start(), создающей специальный служебный файл с именем, соответствующим идетнификаиор сессии (сокращенно SID), в который впоследствии будут записаны все данные, связанные с текущей сессией. Место размещения этих файлов зависит от настроек PHP. При использовании в скриптах сессии необходимо иногда чистить директорию с данными временными файлами, так как там со временем может накопиться большое количество ненужных файлов. Также эта функция используется для продолжения текущей сессии. То есть если для данного пользователя файл создан, то функция session_start() не будет создавать новый файл, а просто откроет существующий. Таким образом, она должна быть вызвана на каждой странице, использующей данные текущей сессии.

В PHP предусмотрено два способа передачи SID:

– через метод GET. Тогда посетитель будет видеть в своем браузере адресную строку следующего типа:
http://server.com/main.PHP?PHPSESSID=bdd95bcd4e1e2ef5ec57fc83a69bba86

– через Cookie. Здесь посетитель не будет видеть признаков существования сессии, ID хранится в Cookie.

Следующий шаг в работе с сессиями – запись данных в сессию. Данные сессии сохраняются в суперглобальном массиве $_SESSION. Регистрация данных в сессию должна выглядеть примерно следующим образом:

session_start(); $_SESSION['name'] = "Алесь Васильков"; $_SESSION['birth'] = "4 марта";

Теперь на любой странице данного сайта можно обратиться к посетителю по имени:

session_start(); echo " You are ".$_SESSION['name']; echo " Your birthday is ".$_SESSION['birth'];

Если требуется уничтожить какой–то элемент в суперглобальном массиве $_SESSION текущей сессии, то следует использовать функцию unset():

unset($_SESSION[' name ']);

Нередко при работе с сессиями нам требуется определить ее SID. Этим занимается функция с соответствующим названием session_id(), которая в качестве результата возвращает ID текущей сессии. На этой функции основан механизм подсчета посетителей на сайте в данный момент.

Бывают случаи, когда становится очень неудобным использовать идентификатор сессии. В этом случае можно использовать функцию session_name(), которая может выполнять две роли. Во–первых, она может возвращать имя текущей сессии (по умолчанию – PHPSESSID). В этом случае ее следует использовать без аргументов. Во–вторых, эта функция может устанавливать имя текущей сессии

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

Если уничтожать текущую сессию не требуется, а необходимо лишь обнулить все значения, хранящиеся в ней, то следует вызвать функцию session_unset(), которая уничтожит все элементы в суперглобальном массиве $_SESSION текущей сессии.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: