46336 (665509)

Файл №665509 46336 (Сессии в PHP)46336 (665509)2016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Сессии в 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);

Первый пример

Теперь вы знаете достаточно, что бы пользоваться сеансовыми переменными. На основе полученных знаний можно реализовать, к примеру, простейший счетчик посещений. Он будет считать сколько страниц просмотрел пользователь за один сеанс.

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 хранится идентификатор пользователя.

...

//где то в скрипте

$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;

//будет выведена строка, которая была сохранена в предыдущем сеансе

...

?>

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://www.soch.imperium.by

Характеристики

Тип файла
Документ
Размер
26,55 Kb
Материал
Тип материала
Учебное заведение
Неизвестно

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов реферата

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6529
Авторов
на СтудИзбе
301
Средний доход
с одного платного файла
Обучение Подробнее