Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программируем на PHP - вопросы и ответы.


Информационный Канал Subscribe.Ru

Здравствуйте! Выпуск номер 59
рассылки сайта РНР для всех!

Вы получили этот выпуск рассылки, так как являетесь подписчиком рассылок сайта http://subscribe.ru Рассылка выходит еженедельно, и предлагает Вам авторские материалы по теме программирования на скриптовом языке гипертекстового препроцессора РНР. Кроме того - есть система вопросов и ответов, обмен ссылками и баннерами, раздел Ваши письма и многое другое.
Форум сайта
Архив рассылки

заказать книги по РНР  
(только Беларусь)

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

 

Еще не забыли про 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://virtual.brest.by - Виртуальный Брест. Региональный информационно - развлекательный портал города Бреста. Чат, форум, статьи, услуги, объявления, недвижимость, каталог сайтов - это и многое другое ждет Вас на страницах сайта.
http://price.bresttelecom.by - сайт прайсов фирм города Бреста. Поиск, подсчет, реклама и т.д.
http://204040.com - Интернет-магазин компьютерного салона Успех г. Брест
http://tweak.tut.by - http://tweak.bresttelecom.by - Оптимизация и настройка компьютера. Если Вас интересуют различные аспекты настройки Вашего мегагерцевого друга, Вам надо посетить сайт посвященный настройке и оптимизации. Кроме того - список последних версий популярных программ и свежие новости, а так же чат, форум и многое другое!


автор рассылки Андрей Кухарчик / http://virtual.brest.by/php



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное