Название: Сессии в PHP
Вид работы: реферат
Рубрика: Информатика и программирование
Размер файла: 15.25 Kb
Скачать файл: referat.me-139292.docx
Краткое описание работы: Сессия - это время, в течении которого посетитель находится на сайте. Часто возникает необходимость в том, что бы в течении сеанса пользователя сопровождали некоторые переменные.
Сессии в PHP
Сессия - это время, в течении которого посетитель находится на сайте. Часто возникает необходимость в том, что бы в течении сеанса пользователя сопровождали некоторые переменные. Можно записать эти переменные в 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;
//будет выведена строка, которая была сохранена в предыдущем сеансе
...
?>
Похожие работы
-
Оптимизация сайта: ошибки
Очень часто в дизайне сайта используется графический заголовок (шапка), то есть картинка во всю ширину страницы, содержащая, как правило, логотип компании, название и некоторую другую информацию.
-
Мониторинг эффективности web-сайта
Разработка с учетом потребности в измерениях. Взаимодействие с браузером. Учет целей и задач измерений. Измерение объема трафика на сайте.
-
Поисковые системы и индексация страниц
Поскольку распознавание поисковиком – решающий фактор для большинства в сетевом бизнесе, владельцы веб-сайтов должны быть уверены в том, что их серверы функционируют ежедневно и круглосуточно.
-
Клоакинг
Клоакинг – метод достижения высоких позиций в поисковых системах, который заключается в "показе" разных страниц поисковому роботу (пауку) и посетителю. Таким образом, можно добиться хороших позиций не ограничивая себя в красоте дизайна.
-
Система передачи сообщений при непрерывной работе SMTP-сервера
Протокол для поддержания системы передачи сообщений, обеспечение непрерывной работы SMTP-сервера. Примеры использования команды LIST, работа через протокол POP3, особенности авторизации. Условия работы режима "обновление". Пример сеанса с POP3 сервером.
-
Вопросы по информатике
В чем состоят особенности организации пакетного режима работы ЭВМ. Сформировать файл, содержащий результаты сессии студентов одной группы в виде матрицы.
-
Логическое проектирование
Логическое проектирование включает организацию информации на сайте, построение его структуры и навигации по разделам.
-
Расчет необходимого количества закупаемого сырья с помощью средств Excel и VBA
Определение количества закупаемого сырья на выпуск продукции по месяцам, в течении года и за год в целом. Алгоритм необходимых действий, представление результатов в графическом виде. Решение задачи в табличном процессоре Excel и с помощью средств VBA.
-
Разработка программной системы для работника деканата
База данных для работников деканата для хранения сведений о группах и студентах и о результатах текущей сессии. Построение инфологической модели предметной области. Создание базы данных в Microsoft Access 2000. Создание элементов управления базой данных.
-
Приемы безопасного программирования веб-приложений на PHP
Единственная цель этой работы - показать некоторые используемые мной приемы для защиты веб- приложений типа WWW-чатов, гостевых книг, веб-форумов и других приложений подобного рода.