это быстро и бесплатно
Оформите заказ сейчас и получите скидку 100 руб.!
Ознакомительный фрагмент работы:
Сессия - это время, в течении которого посетитель находится на сайте. Часто возникает необходимость в том, что бы в течении сеанса пользователя сопровождали некоторые переменные. Можно записать эти переменные в 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;
//будет выведена строка, которая была сохранена в предыдущем сеансе
...
?>
Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников
Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.
Цены ниже, чем в агентствах и у конкурентов
Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит
Бесплатные доработки и консультации
Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки
Гарантируем возврат
Если работа вас не устроит – мы вернем 100% суммы заказа
Техподдержка 7 дней в неделю
Наши менеджеры всегда на связи и оперативно решат любую проблему
Строгий отбор экспертов
К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»
Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован
Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн
сделать презентацию Тема №25
Презентация, Медицинское обеспечение физической культуры и спорта
Срок сдачи к 15 июля
Отчет о прохождении производственной практики: технологической (проектно-технологической) практики в пао «сбербанк»
Отчет по практике, Финансы и кредит
Срок сдачи к 17 июля
Сделать отчет по практике( гостиница «Централь» г. Донецк)
Отчет по практике, Ресторанно-гостиничное дело
Срок сдачи к 16 июля
Проверить оформление готовых отчетов по практике. Государственное муниципальное управление. П-00032
Отчет по практике, Государственное муниципальное управление
Срок сдачи к 17 июля
Выполнить задание строго по практикумам и шаблонам
Бизнес-план, Проектная, менеджмент
Срок сдачи к 19 июля
Разработка технологии получения слитка массой 6 тонн сплава марки эп836вд методом вдп. кристаллизатор 800
Реферат, Техника и технология производства материалов
Срок сдачи к 19 июля
Социальная работа. проверить нир
Отчет по практике, 39.03.02 Социальная работа, социальная работа
Срок сдачи к 14 июля
Отчет по производственной практике в виде реферата по конкретной теме
Отчет по практике, Производственная практика на направлении Техносферная безопасность
Срок сдачи к 14 июля
Отчет по практике, 4 семестр, профилирующая практика | у. о | учебная практика, электроэнергетика и электротехника, во, бакалавриат
Отчет по практике, Электроэнергетика
Срок сдачи к 16 июля
Заполните форму и узнайте цену на индивидуальную работу!