Лекции     Книги     Рефераты    
Диплом, курсовая на заказ

PHP. Работа с сессией.

news date Дек.10.2008    categories Web-программирование > PHP    comments (0)

Рано или поздно любой PHP разработчик сталкивается с необходимостью передавать какую-либо информацию между страницами сайта. И для многих новичков это становится довольно значительной проблемой. Эта статья направлена дать вам определенное представление об одном из способов такой передачи в php – сессии. Но об этом немного позже. Пока попробуем смоделировать следующую ситуацию: У вас возникла необходимость ограничить авторизацию пользователей на сайте. Пример такой авторизации можно встретить фактически на любом сайте.

Как логически, так и технически, реализация такого модуля не представляет особой проблемы. Рассмотрим простейший пример создания такой системы.

  1. Если пользователь еще не авторизован, то выводим форму авторизации (простейшая форма на html с полями для ввода логина, пароля и одной кнопкой).
  2. В случае, когда пользователь уже прошел авторизацию, вывести страницу с личной информацией.

И тут у нас возникает проблема уже с первого предложения «Если пользователь еще не авторизован» – но вот проблема, у протокола http нет возможности отслеживать перемещения и действия пользователя на сайте. А вот исходя из задания, нам необходимо определить, проходил ли текущий пользователь авторизацию в прошлом. Вот для таких задач и предназначена сессия.
Итак, Сессия – промежуток времени, который пользователь проводит на сайте (сессия начинается в момент открытия сайта в браузере и завершается при закрытии сайта или переходе на другой).

Работу с сессией можно поделить на 3 этапа:

  • Открытие сессии;
  • Обработка данных, записанных в сессию;
  • Закрытие сессии.

Открытие сессии.

Тут есть два варианта. Сессия может стартовать в автоматическом режиме либо запускаться вручную, что зависит от настроек php-сервера (Т.е. если переменная session.auto_start в файле php.ini имеет значение 1, то сессия будет стартовать автоматом, если 0 – то нет.). При автоматическом старте сессии, этот абзац можно не читать. При ручном же старте используется функция session_start()

Обработка данных.

В php доступ ко всем сессионным переменным осуществляется посредствам массива $_SESSION, в который можно свободно заносить и извлекать данные. Обрабатывается эта переменная как обычный массив. В переменную $_SESSION можно писать как простые переменные, так и массивы. Если с записью и извлечением все понятно (чуть позже рассмотрим пример использования), то уничтожение переменной имеет весьма специфический характер. В случае, когда возникла необходимость уничтожения определенной переменной сессии без закрытия самой сессии, используют специальную функцию unset(). Т.е. если необходимо удалить переменную $_SESSION[‘action’], формат записи будет следующий – unset($_SESSION[‘action’]).

Закрытие сессии.

Эта процедура производится при необходимости досрочно разорвать сессию. Что имеет смысл, к примеру, при использовании возможности смены пользователя на сайте. Реализуется данная возможность по средствам php-функции session_destroy().

После рассмотрения всех трех этапов, будет нелишним закрепить новые знания на конкретном примере. В качестве примера возьмем простейший скрипт авторизации.

Cоздадим файл Index.php следующего содержания:

<?php
session_start(); // открытие сессии
//проверяем, есть ли запись в сессии, если есть, то выводим страницу с данными, в противном случае форму регистрации
If(isset($_SESSION[‘login’])){
echo “доступ разрешен”;
}
else {
if ($_GET[‘action’] = “out”)
{
require “aut.php”;
}
else{
echo ”[тут html код формы авторизации]”;
}
?>

Как видно из кода, тут задействован еще один файл – aut.php. Он предназначен для проверки введенных в поля данных и в случае их правильности, записывает их в переменную. Саму технологию этой проверки я тут описывать не стану. Укажу лишь оператор, которым производится добавление данных в сессию, вот эта строчка:

$_SESSION[‘login’] = “ok”;

Вот пожалуй и все, что я и хотел изложить в рамках данной статьи. Удачи!


Обсуждения

Нет комментариев к “PHP. Работа с сессией.”

Добавить комментарий

Вы должны войти



© 2009 - 2010 | Webteach.ru | Образовательный портал