Сессия - это время, в течении которого посетитель находится на сайте. Часто возникает необходимость в том, что бы в течении сеанса пользователя сопровождали некоторые переменные. Можно записать эти переменные в cookie, но если переменных много, то этот способ не очень удобен. Гораздо эффективнее в такой ситуации является использование сеансовых переменных. Об этом и пойдет речь в этой статье.
Механизм работы сессий
Наверняка вам интересен механизм работы сессий. Ну что ж, я расскажу. К примеру при входе на сайт пользователю присваивается случайный идентификатор - SID. Он сохраняется на компьютере пользователя в cookie c именем PHPSESSID. Вообще это имя выставляется в файле php.ini, но речь сейчас не об этом. Если же в браузере посетителя отключен прием cookie, то этот идентификатор со значением цепляется ко всем url на протяжении сессии. Во время создания сессии на сервере создается файл, имя которого совпадает с PHPSESSID. В этом файле содержатся все сеансовые переменные. Однако сеансовые переменные так же могут быть сохранены и в базе данных - все зависит от конфигурации PHP. По умолчанию эти переменные сохраняются в файле в той дирректории, в которой лежит скрипт, создавший сеанс. При обращении к сеансовой переменной сервер открывает (или делает запрос к базе данных) сеансовый файл и ищет там значение нужной переменной.
Создание сессии
Сессия создается с помощью функции session_start(). При вызове она проверяет, существует ли уже созданная сессия. Если нет, то она создает сессию. Синтаксис функции:
boolean session_start();
При создании сеанса функция сначала присваивает пользователю SID, отправляет cookie и создает файл с сеансовыми переменными. Очень легко и удобно.
Уничтожение сессии
Если вам по каким то причинам приспичило уничтожить сессию, то воспользуйтесь функцией session_destroy(). Синтаксис функции:
boolean session_destroy();
Эта функция уничтожает сеансовые переменные и сеансовый файл (если эти переменные были в нем). Обратите внимание, что эта функция не уничтожает cookie с SID на комьютере посетителя.
Создание сеансовых переменных
Ну а теперь о том, ради чего вообще задумывалась технология сессий - о создании сеансовых переменных. Этим занимается функция session_register(). Синтаксис функции:
boolean session_register(mixed name [, mixed ...]);
Следует заметить, что эта функция лишь создает сеансовые переменные, и ничего более. Присвайвать значения им придется самостоятельно. Делается это как в случае с обычными переменными. К тому же эта функция неявно вызывает session_start().Впрочем из следующего примера будет все ясно.
Как узнать, была ли зарегистрирована переменная
Это можно узнать с помощью функции session_is_registered(). Синтаксис функции:
booleansession_is_registered(string name);
Первый пример
Теперь вы знаете достаточно, что бы пользоваться сеансовыми переменными. На основе полученных знаний можно реализовать, к примеру, простейший счетчик посещений. Он будет считать сколько страниц просмотрел пользователь за один сеанс.
<?php
session_start(); //создаем сессию
//если переменная page_hits не была зарегистрирована
//то регистрируем её и присваиваем начальное значение
if (!session_is_registered('page_hits')) {
session_register('page_hits');
$page_hits = 0;
}
$page_hits++;
echo "Вы просмотрели уже $page_hits страниц";
?>
Такой код можно разместить на любой странице вашего сайта.
Уничтожение сеансовых переменных
Сеансовые переменные уничтожаются функцией session_unregister() с таким же успехом, как и создаются. Синтаксис функции:
boolean session_unregister(string name);
Это может быть полезным в том случае, если вам не нужна больше сеансовая переменная и вы хотите использовать её как обычную переменную.
Изменение/Получение SID
Получить или изменить текущий сеансовый идентификатор легко. Достаточно воспользоваться функцией session_id(). Синтаксис функции:
string session_id([string sid]);
Если был передан параметр sid, то сеансовый идентификатор изменяется. В противном случае функция просто возвращает SID.
Сохранение и восстановление сеансовых переменных
В PHP сохранение и восстановление сеансовых переменных сведено к использованию функций session_encode() и session_decode(). Это очень удобно, поскольку функция session_encode() формирует строку которую можно где ни будь сохранить и в дальнейшем расшифровать функцией session_decode(). Эту строку очень удобно хранить в базе данных, поскольку не нужно создавать отдельные поля да и обьем скрипта уменьшается. Итак, синтаксис этих фукнций:
boolean session_encode();
string session_decode(string data);
С первой функцией более менее понятно. А второй функции необходимо передать зашифрованную функцией session_encode() строку. Без примера воспринимается не очень легко. Давайте рассмотрим простенький пример.
Предположим, что сессия уже начата и в переменной $u_id хранится идентификатор пользователя.
<php
...
//где то в скрипте
$id = session_id($u_id);
//подключаемся к базе
mysql_pconnect("localhost", "root", "") or die("Не могу подключиться к базе");
mysql_select_db("mysite"); //выбираем базу
//здесь выбирается поле с сохраненной строкой сеансовых переменных
$query = "SELECT s_data FROM saved_users_data WHERE uid = '$id'";
$result = mysql_query($query) or die("Query '$query' failed");
$user_s_data = mysql_result($result, 0, 's_data');
//теперь наша стркоа хранится в переменной $user_s_data
session_decode($user_s_data);
//допустим, что среди сохраненных сеансовых переменных
//была переменная $my_str
echo $my_str;
//будет выведена строка, которая была сохранена в предыдущем сеансе
...
?>
Другие работы по теме:
Модели поведения посетителей сайтов
Исследование выявило семь типов пользовательских сессий, причем оказалось, что три из них наиболее привлекательны для онлайнового бизнеса, чем другие. К этим трем относятся сессии с целью развлечений, поиск информации и просто серфинг.
Советы по написанию ов
Здесь представлены 10 правил, как сдать "свой-чужой" реферат на отлично, основаные на личном опыте и рассказам друзей и очевидцев. Изучив этот "кладезь мудрости", вы будете легче и без потерь прокатывать сессии на халяву
9. работа по общей геологии
Зачеты Экзамены Бакалавры 1 курс Зимняя сессия 1. Иностранный язык 2. Физическая культура 3. Высшая математика 4. Общая геология 5. Введение в специальность?
работа (проект)
Постановлением Правительства РФ от 14 октября 1994 №1168, рекомендациям по организации промежуточной аттестации студентов в образовательных учреждениях спо (Письмо Минобразования России от 05 апреля 1999 года №16-52-59 ин/16-13)
Evergrey
Шведская банда "Evergrey", исповедующая пауэр-метал с элементами прогрессива и симфонизма, начала свою деятельность в 1998-м. В этом году на гетебургском лейбле "GNW" вышел дебютный альбом группы, "The dark discovery".
Freedom Call
"Freedom call" – одна из многих немецких металлических команд, пошедших по пути, проторенному их соотечественниками из "Helloween". Ее основатели, Крис Бэй и Дэн Циммерманн, познакомились в 1988 году.
Коучинг, лидерство и самораскрытие
Способствовать изменениям, научению и росту в себе и других. Коучинг и лидерство. Качество действий и центровка. Изменение, научение и рост.Человек продолжает происходить от обезьяны
Принятие России в совет Европы: кто за и против?
ПРИНЯТИЕ РОССИИ В СОВЕТ ЕВРОПЫ: КТО “ЗА” И “ПРОТИВ”? !!!(на основе газеты Московский Комсомолец)!!! Похоже, теперь вопрос наконец-то предрешен. Рассмотрение заявки Москвы значится в повестке открывшейся сегодня сессии Парламентской ассамблеи СЕ. Правда, всю малину едва не испортил Жириновский, он выскочил из избы и забился в нервном припадке.
Конституция Молдавской ССР 1941
Введение 1 История 1.1 План Введение Список литературы Введение Конституция Молдавской ССР была главным законом этой республики. 1. История В ноябре 1940 года Верховный Совет Молдавской Автономной ССР в связи с образованием Молдавской ССР на своей внеочередной сессии создал Конституционную комиссию для разработки проекта Конституции (Основного Закона) Молдавской ССР и назначил выборы в Верховный Совет новообразованной союзной республики[1].
Мусабеков, Газанфар Махмуд оглы
Введение 1 Биография 1.1 Ранние годы 1.2 Деятельность в Азербайджане 2 Награды Список литературы Введение Газанфа́р Махму́д оглы́ Мусабе́ков (азерб. Qəzənfər Mahmud oğlu Musabəyov, 14 (26) июля 1888(18880726) — 9 февраля 1938) — советский и азербайджанский политический деятель и революционер, Председатель СНК Азербайджанской ССР (1922-1930), Председатель СНК ЗСФСР (1932-1936).
Коронный трибунал
Введение 1 История 2 Состав 3 Компетенции 4 Фотогалерея 5 Источники информации Введение Коронный трибунал (Трибунал Королевства Польского, Главный коронный трибунал)(пол. Trybunał Koronny) — высшая апелляционная судебная инстанция в Королевстве Польском Речи Посполоитой для шляхетских судов, организованный Вольным Сеймом в Варшаве в 1578 г.
Резолюция Генеральной Ассамблеи ООН 48 114
Резолюция № 48/114 . Принятая без голосования на 85 пленарном заседании, 48 Сессии Генеральной Ассамблеи ООН, 20 декабря 1993 года резолюция под названием «Чрезвычайная международная помощь беженцам и перемещенным лицам в Азербайджане[1][2].
Резолюция Генеральной Ассамблеи ООН 62 243
План Введение 1 Текст Резолюции 2 Голосование Список литературы Введение Резолюция № 62/243 — принятая без передачи в Главные комитеты на 62 Сессии Генеральной Ассамблеи ООН, 14 марта 2008 года резолюция под названием: «Положение на оккупированных территориях Азербайджана». Резолюция была принята 39-ю голосами «за», 7-ю «против» при 100 воздержавшихся[1][2].
Трибунал Великого княжества Литовского
Трибунал Великого княжества Литовского — высший апелляционный суд в Великом княжестве Литовском. Организован в марте 1581, спустя три года после создания коронного трибунала, начал действовать в 1582. Состоял из 46 депутатов, избиравшихся на год из шляхты на поветовых сеймиках по 2 от повета (с 1588 избирались еще 3 депутата от жмуди)[1].
История Нагорно-Карабахской Республики
Наго́рно-Караба́хская Респу́блика — провозглашённое в 1991 году непризнанное государство в Закавказье. Хронология 2 сентября 1991 года на совместной сессии Нагорно-Карабахского областного и Шаумяновского районного Советов народных депутатов было провозглашено образование Нагорно-Карабахской Республики в составе СССР в границах Нагорно-Карабахской автономной области и Шаумяновского района, населённых преимущественно армянами.
Палестинский национальный совет
Палестинский национальный совет (PNC, ПНС) — представительный орган арабского народа Палестины, представляющий арабов-палестинцев, проживающих:
Парламент Греции
Парламент Греции Парламент Греции (греч. Βουλή των Ελλήνων, дословно Воля эллинов) — однопалатный законодательный орган (парламент) Греции, включающий 300 депутатов, избираемых на срок в четыре года.
Резолюция Генеральной Ассамблеи ООН 60 285
Резолюция № 60/285 — принятая без голосования и передачи в Главные комитеты на 60 сессии Генеральной Ассамблеи ООН 7 сентября 2006 года резолюция под названием «Положение на оккупированных территориях Азербайджана»[1][2].
Д Эското Брокман, Мигель
Миге́ль д'Эско́то Бро́кман (исп. Miguel d’Escoto Brockmann) (родился 5 февраля 1933 в Лос-Анджелесе, США) — никарагуанский дипломат, политик и католический священник. Председатель 63-й сессии Генеральной ассамблеи ООН.
Команды системного администратора
В этой статье собраны основные команды прописываемые в командной строке Windows NT/2000/XP для выполнения определенной сетевой функции.
Пример программирония на Бейсике (результаты сессии 25 студентов, сдавших 5 экзаменов)
Задания №1 В чем состоят особенности организации пакетного режима работы ЭВМ, режима разделения времени и режима реального времени? ОТВЕТ: Особенность пакетного режима работы ЭВМ состоят в том что, одновременно могут работать, сразу несколько программ не зависимо друг - друга. Количество программы, которая работает одновременно, указывается пользователем в файле CONFIG.SYS.
Оптимизация сайта: ошибки
Очень часто в дизайне сайта используется графический заголовок (шапка), то есть картинка во всю ширину страницы, содержащая, как правило, логотип компании, название и некоторую другую информацию.
Вопросы по информатике
В чем состоят особенности организации пакетного режима работы ЭВМ. Сформировать файл, содержащий результаты сессии студентов одной группы в виде матрицы.
Команды системного администратора
В этой статье собраны основные команды прописываемые в командной строке Windows NT/2000/XP для выполнения определенной сетевой функции. Пример вида <имя> ,практически пишется как имя. Чтобы запустить командную строку необходимо нажать Пуск - Выполнить ввести "cmd" Enter или OK.
Акт провозглашения независимости Украины 2
24 августа 1991 г. Акт провозглашения независимости Украины . (одобренный всенародным голосованием (референдумом) 1 декабря 1991 г.) 28 июня 1996 г День принятия Конституции Украины