При использовании cookie-наборов возникают некоторые проблемы: есть браузеры, которые не принимают cookie-наборы, а есть пользователи, которые запрещают использование cookie-наборов в своих браузерах. Это одна из причин, по которым в сеансах РНР используются двойной метод cookie-набор/адрес URL (ниже этот вопрос рассматривается более подробно).
В сеансе РНР нет необходимости задавать cookie-наборы вручную. Это за вас сделают функции сеанса.
Для того чтобы просмотреть содержимое cookie-набора, установленное при управлении сеансом, можно воспользоваться функцией session_get_cookie_params(). Она возвращает ассоциативный массив, содержащий элементы lifetime, path и domain.
Можно использовать также:
session_set_cookie_params($lifetime, $path, $domain);
этот оператор устанавливает параметры cookie-набора для сеанса.
Основными этапами использования сеанса являются следующие: Запуск сеанса;
Регистрация переменных сеанса;
Использование переменных сеанса;
Отмена регистрации переменных и закрытие сеанса.
Заметим, что все перечисленные этапы не обязательно могут содержаться в одном сценарии, и некоторые из них могут находиться в нескольких сценариях. Рассмотрим каждый из этих этапов последовательно.
Прежде чем можно будет воспользоваться функциональными возможностями сеанса, следует запустить сам сеанс. Существует три способа сделать это.
Первый (и самый простой) заключается в том, что сценарий начинается с вызова функции session_start().
Эта функция проверяет, существует ли идентификатор текущего сеанса. Если нет, она его создает. Если же идентификатор текущего сеанса уже существует, она загружает зарегистрированные переменные сеанса, чтобы они стали доступными для использования.
Надо отметить, что это прекрасный способ - вызов session_start() в начале сценариев, в которых используются сеансы.
Второй способ заключается в том, что сеанс запускается при попытке зарегистрировать переменные сеанса.
Третий способ запустить сеанс - задать установки РНР, при которых сеанс будет запускаться автоматически, как только кто-либо посетит ваш сайт.д.ля этого следует воспользоваться опцией session. auto_start в файле php. ini.
Для того чтобы получить возможность отслеживать переменные от одного сценария к другому, их необходимо зарегистрировать. Это делается путем вызова функции session_register().
Данный оператор регистрирует имя переменной и отслеживает ее значение. Отслеживание переменной будет осуществляться, пока не завершится сеанс либо пока вручную не отменится ее регистрация.
If(! session_id()) session_start();
If(! isset($_session [‘error_fill’] $_session [‘error_fill’] [‘bool’] =falle
Здесь регистрируется переменная сеанса “error fill”, используемая для отображения ошибки заполнения полей регистрации студента.
Чтобы сделать переменную сеанса доступной для использования, сначала необходимо запустить сеанс, воспользовавшись одним из описанных выше способов.
После этого появляется доступ к этой переменной. Если опция register_globals включена, то доступ к этой переменной можно получить через сокращенную форму ее имени, например, $error_fill. Если же упомянутая опция не включена, получить доступ к переменной можно через ассоциативный массив $ _SESSION, например, $ _SESSION ["error_fill"].
Переменные сеанса не могут быть перезаписаны данными GET или POST. Это хорошо с точки зрения обеспечения безопасности, однако сопряжено с некоторыми ограничениями при кодировании.
С другой стороны, от вас потребуется тщательность при проверке на предмет того, установлены ли уже переменные сеанса (например, с использованием isset() либо empty()). Кроме того, следует иметь в виду, что переменные могут быть установлены пользователем через GET или POST. Проверить, является ли переменная зарегистрированной переменной сеанса, можно обратившись к функции $_session (). Вызов функции выполняется следующим образом:
$_session [‘error_fill’]
Следующая функция проверит правильность написания электронного адреса и вернет, $_session [‘error_fill’] [bool’] =true, если адрес написан неправильно.
If(! ereg(^. +@. +\. +$,$email))
{
$session [‘error_fill’] [bool’] =true;
$_session [‘error_fill’] [‘message’] =”Проверьте правильность написания электронного адреса”;
}
Если переменная $_session [‘student’] существует то ей присваиваются текущие значения. Здесь переменной присваиваются значения регистрации студента.
$_SESSION ['student'] ['name'] =$name; $_SESSION ['student'] ['family'] =$family;
$_SESSION ['student'] ['group'] =$group; $_SESSION ['student'] ['faculty'] =$faculty;
$_SESSION ['student'] ['email'] =$email; $_SESSION ['student'] ['login'] =$login;
После окончания работы с переменной сеанса ее регистрацию можно отменить, воспользовавшись функцией session_unregister():
$_session_unregister(‘error_fill’)
Подобно функции регистрации, эта функция требует указания имени переменной, регистрацию которой необходимо отменить, в виде строки, не включающей символ $. Данная функция за один раз может отменить регистрацию только одной переменной сеанса (в противоположность session_register()). Однако, для отмены регистрации всех переменных текущего сеанса можно обратиться к session_unset().
По завершении сеанса сначала потребуется отменить регистрацию всех переменных, а затем вызвать
Session_destroy()
для обнуления идентификатора сеанса.
При запуске приложения создаются 2 переменные сеанса: $_SESSION [‘mode’], отвечающая за страницу приложения и $_SESSION [‘error_fill’], отвечающая за правильность заполнения полей регистрации студентом.
if(! session_id()) session_start();
if(! isset($_SESSION ['error_fill'])) $_SESSION ['error_fill'] ['bool'] ='false';
if(isset($_REQUEST ['mode']))
{
$mode=$_REQUEST ['mode'] ;
$_SESSION ['mode'] =$mode;
}
else $mode=isset($_SESSION ['mode'])? $_SESSION ['mode']: '';
При посещении магазина создается еще одна переменная сеанса - $_SESION [‘client’].
$_SESSION ['client'] =isset($_SESSION ['client'])? $_SESSION ['client']: '';
if($_SESSION ['client'] =='')
{
if(isset($_SESSION ['student']))
{
$_SESSION ['client'] ['name'] =$_SESSION ['student'] ['name'] ;
$_SESSION ['client'] ['sname'] =$_SESSION ['student'] ['family'] ;
$_SESSION ['client'] ['email'] =$_SESSION ['student'] ['email'] ;
$_SESSION ['client'] ['fhone'] ='';
$_SESSION ['client'] ['address'] ='';
}else
{
$_SESSION ['client'] ['name'] ='';
$_SESSION ['client'] ['sname'] ='';
$_SESSION ['client'] ['fhone'] ='';
$_SESSION ['client'] ['email'] ='';
$_SESSION ['client'] ['address'] ='';
}
Здесь сначала проверяется наличие переменной сеанса $_SESSION [‘student’], и если она зарегистрирована, совпадающим полям переменной $_SESION [‘client’] присваиваются соответствующие поля переменной $_SESSION [‘student’], иначе поля обнуляются.
Для запуска веб-сайта необходимо запустить Интернет-браузер и набрать в строке адреса в локальном режиме http://localhost/kashtan/InternetTechnology. php. Откроется главная страница приложения (Рисунок 2.25). Пользователь получает возможность навигации по материалам сайта, регистрации (для незарегистрированных пользователей) или входа в систему (для зарегистрированных пользователей) и дистанционного обучения.
С левой стороны расположены поля для входа в систему, ссылка на форму регистрации и кнопки тестирования и чата.
Навигация по сайту организована средствами кнопок, расположенных в верхней части страницы.
Рисунок 2.25 - кнопки навигации по дисциплинам
Страницы: лекции, лабораторные работы, контрольные работы в свою очередь содержат ссылки на страницы с конкретными заданиями. Например страница лекций отображена в предыдущей подглаве на рисунке 2.24.
Для того чтобы получить доступ к обучению на сайте необходимо зарегистрироваться в системе. Переход на страницу регистрации осуществляется щелчком по ссылке "Регистрация" в левой части страницы. Открывается форма регистрации (рисунок 2.26). Пользователь должен заполнить все поля формы и нажать на кнопку "Регистрация". Программа проверяет наличие введенного Ника в базе данных. (Ник должен быть уникальным). При успешной проверке происходит регистрация и данные из формы записываются в базу данных.
Рисунок 2.26 - форма регистрации
Теперь пользователь может войти в систему, просто осуществив ввод Ника и пароля в левой части формы.
Зарегистрированные пользователи могут оставлять сообщения в гостевой книге и чате. (Рисунки 2.27 и 2.28) Для входа в чат нужно воспользоваться кнопкой входа изображенной на рисунке 2.21. В гостевой книге можно оставить свои вопросы преподавателю, отзывы и предложения. В чате можно завязать беседу по интересующей вас теме.
Рисунок 2.27 - гостевая книга
Рисунок 2.28 - Чат