Главная » 2016 » Июнь » 20 » Храним данные в сессии
13:25
Храним данные в сессии
Интерфейс пользователя обычно организован так, что пользователь вводит какие-то данные в одну или несколько форм. Иногда нам нужно помнить эти данные, пока открыто окно браузера (например, список товаров корзины интернет-магазина). Технически это можно реализовать с помощью скрытых полей формы, но в большинстве случаев это сложно и неудобно.РНР обладает встроенной системой сессий, позволяющей вам сохранять и использовать данные с привязкой к браузеру. Сессии сохраняют некоторые настройки (ID сессии) в Cookies, но основные данные хранятся на вашем сервере. Для запуска сессии нужно выполнить функцию session_start(), а получить доступ к переменным сессии можно через массив $_SESSION.Рассмотрим форму, использующую сессии для сбора, анализа и редактирования данных. Начнем с простого сценария формы. Первая часть запускает сессию и извлекает существующие переменные сессии:<?session_start() ;$name = $_SESSION["e;name"e;];$color = $_SESSION["e;color"e;];?> Возможно, вам нужны другие переменные, но вы всегда сможете вернуться к этой части и добавить нужные вам переменные. Когда мы выводим форму, мы используем эти старые значения в качестве значений по умолчанию: print ’<form action="e;sessionview.php"e; method="e;post"e;>’;print “Как вас зовут? “;print ’<input name~"e;name"e; type="e;text"e; value="e;’ . $name . ’"e; /><br/>’;print “Какой ваш любимый цвет? “;print ’<input name="e;color"e; type="e;text"e; value="e;’ . $color . ’"e; /><br/>’; print ’<input type="e;submit"e;/ >’;print ’<input type=”submit"e; name="e;clear"e; value="e;Очистить"e; />’; ?> Заметьте, что мы используем дополнительную кнопку для очистки значений сессий. Сценарий session view .php сохраняет данные формы и позволяет пользователю редактировать значения. Первым делом мы запускаем сессию и проверяем, переданы ли name и color как данные формы. Если они есть, то мы используем их как переменные сессии: <?session_start();if ($__REQUEST [ "e;name"e; ] ) {$_SESSION["e;name"e;] = $_REQUEST["e;name"e;];}if ($_REQUEST["e;color"e;] ) {$_SESSION["e;color"e;] = $_REQUEST["e;color"e;]; }?> Следующая часть проверяет, нажал ли пользователь кнопку Clear Details. В этом случае мы используем unset () для очистки значений сессии: if ($_REQUEST["e;clear"e;]) { unset($_SESSION["e;name"e;]); unset($_SESSION["e;color"e;]) ;} Теперь мы знаем, что массив $_SESSI0N содержит все корректные значения, поэтому мы можем вывести информацию пользователя на основании этих значений: $name = $_SESSION["e;name"e;]; $color = $_SESSION["e;color"e;]; if ($name) { print "e;Ваше имя <b>$name</b>.<br />"e;; }if ($color) {print "e;Ваш любимый цвет <b>$color</b>.<br />"e;; } Наконец, мы предоставим пользователю шанс вернуться назад и отредактировать данные или очистить значения. Для этого выведем следующие ссылки: <?print ’<a href="e;sessionform.php"e;>Edit details</a>’;print ’ <a href="e;sessionview.php?clear=l"e;>Clear values</a>’;?> Как видите, работать с сессиями довольно просто. Что может быть не так? Поскольку session_start () устанавливает Cookies (идентификатор сессии), то до вызова этой функции вы не должны ничего выводить в браузер пользователя. В противном случае клиент не сможет принять идентификатор сессии и сервер не сможет ассоциировать клиента с сессией.
Просмотров: 407 | Добавил: AdnrNick | Рейтинг: 0.0/0
Всего комментариев: 0
avatar