От сессии до сессии…

Автор: Андрей Кухарчик Сайт: http://virtual.brest.by/php
   
   Еще не забыли про cookie? Давайте немного освежим память. Итак, это - небольшие кусочки информации, которые сервер записывает на Ваш компьютер для того, что бы сохранить персональные данные, например. Если только… Браузер или сторонние программы разрашают это делать. А как же быть, если пользователь все же выключил прием cookie у себя в настройках? Выход есть, и он нам тоже доступен. Я говорю о сессиях, поддержка которых появилась в PHP начиная с версии 4.
   Что такое сессии и зачем они нужны? Давайте потеоретизируем. Представьте, заходит человек к Вам на сайт, Ваша программ фиксирует это, и присваивает ему определенный номер, который автоматически сохраняется в памяти на диске сервера. В дальнейшем, по этому номеру, не сложно определить что именно интересовало посетителя на сайте, какие именно странички он смотрел и что он там делал. Заманчиво? Это еще далеко не все!
   Один из недостатков CGI-интерфейса, на основе которого и работают все браузеры заключается в том, что программа должна отработать и завершить соединение, инициализированное клиентом. И все данные, полученные в результате такой работы вынужденно теряются. Так вот, сессии позволяют избавиться от этого недостатка, сохраняя нужные программисту данные на диске сервера до нужного времени.
   Вы скажете, что тут надо применить Cookie? И будете совершенно правы. Но! Если они, эти самые cookie отключены, ничего не получится, и мы потеряем посетителя. Хорошо, если это просто Вася Пупкин, а если оптовый покупатель Интернет-магазина? Тут уже не до шуток, пахнет саботажем! Так что от cookie лучше отказаться, тем более что как всегда есть способ лучше.
   Для идентификации пользователя используется идентификатор сессии - SID. Именно с его помощью можно определить, какой пользователь запустил сценарий. Идентификатор сессии хранится в Cookie броузера - вот для чего нужны эти Cookie! Фактически, SID - это имя временного хранилища, то есть имя временного файла, в котором PHP4 хранит информацию о сессии. Обычно эти файлы размещаются в каталоге /tmp на диске сервера. Но не на диске пользователя. Вот этим и отличаются cookie от сессий.
   Есть и еще одно важное отличие. Дело в том, что если cookie отключены, SID все равно передается, но уже при помощи методов GET или POST, в зависимости от ситуации и более выгодного положения дел.
   Для примера всей этой беды давайте попробуем сделать персональный счетчик на сессии.
   <?
   session_name("virtualbrest");
   session_start();
   session_register("counter");
   $counter = @$counter +1; ?>
   <html><body>Нажмите кнопку ОБНОВИТЬ,
   чтобы увеличить счетчик
   <br>Счетчик: <?=$a?>
   </body></html>
   В первой строчке кода мы инициализируем имя сессии для SID, что бы в дальнейшем можно было легко различать разные сессии. Если этого не сделать, PHP автоматически откроет сессию с именем PHPSESID. Функция session_start() инициализирует сессию, а функция session_register("counter") регистрирует в сессии переменную $counter. Имена переменных задаются без знака доллара. Можно несколько раз регистрировать одну и ту же переменную в сессии, ее значение все рвно будет сохранено.
   Вот список еще некоторых полезных нам функций.
   · Проверить зарегистрирована ли переменная в сессии позволяет функция session_is_register(string $name).
   · Отменить регистрацию какой-нибудь переменной можно с помощью функции session_unregister(string $name).
   · Отменить регистрацию ВСЕХ переменных сессии можно с помощью функции session_unset().
   Если запустить данный код и несколько раз обновить окно браузера, мы увидим, как счетчик увеличивается.
   Итак, именно в этом примере параметр SID передается браузером посредством cookie. Но этот пример носит чисто теоретический характер.
   
   
   
   

Опубликовано: HTTP://WWW.R-T-F-M.INFO, pauk ©® 2000-2011.
All rights reserved.
При перепечатки ссылка на сайт обязательна.
Мнение администрации сайта не всегда совпадает с мнением автора..