Помощь в написании студенческих работ
Антистрессовый сервис

Настройка веб-сессиий. 
Настройка веб-сессиий

РефератПомощь в написанииУзнать стоимостьмоей работы

Представте, что мы пишем форму, но в ней такое большое число полей, что было бы глупо поместить их на одну страницу. Нам нужно разбить процесс заполнения формы на несколько этапов, или стадий, и представить их в виде отдельных HTML-документов. Например, в первом документе с диалогом у пользователя может запрашиваться его имя и фамилия, во втором — данные о его месте жительства, и в третьем… Читать ещё >

Настройка веб-сессиий. Настройка веб-сессиий (реферат, курсовая, диплом, контрольная)

Зачем нужны сессии

Сессия представляет собой механизм, позволяющий хранить некоторые данные, индивидуальные для каждого пользователя (например, его имя и номер счета), между запусками сценария.

В Web-программировании есть один класс задач, который может вызвать довольно много проблем, если писать сценарий «в лоб». Речь идет о слабой стороне CGI — невозможности запустить программу на длительное время, позволив ей при этом обмениваться данными с пользователями.

Представте, что мы пишем форму, но в ней такое большое число полей, что было бы глупо поместить их на одну страницу. Нам нужно разбить процесс заполнения формы на несколько этапов, или стадий, и представить их в виде отдельных HTML-документов. Например, в первом документе с диалогом у пользователя может запрашиваться его имя и фамилия, во втором — данные о его месте жительства, и в третьем — номер кредитной карточки. В любой момент можно вернуться на шаг назад, чтобы исправить те или иные данные. Наконец, если все в порядке, накопленная информация обрабатывается — например, помещается в базу данных.

Реализация такой схемы оказывается для Web-приложений довольно нетривиальной проблемой. Действительно, нам придется хранить все ранее введенные данные в каком-нибудь хранилище, которое должно аннулироваться, если пользователь вдруг передумает и уйдет с сайта. Для этого можно использовать функции сериализации и файлы. Однако ими мы решаем только половину проблемы: нам нужно как-то привязать конкретного пользователя к конкретному временному хранилищу. Действительно, предположим, мы этого не сделали. Тогда, если в момент заполнения какой-нибудь формы одним пользователем на сайт зайдет другой и тоже попытается ввести свои данные, получится хаос. Все эти проблемы решаются при помощи сессий. сессия программирование сценарий Использование сессий очень удобно и оправдано в таких приложениях, как Интернет-магазины, форумы, доски объявлений, когда, во-первых, необходимо сохранять информацию о пользователях на протяжении нескольких страниц, а, во-вторых, своевременно предоставлять пользователю новую информацию.

Протокол HTTP является протоколом «без сохранения состояния». Это означает, что данный протокол не имеет встроенного способа сохранения состояния между двумя транзакциями. Т. е., когда пользователь открывает сначала одну страницу сайта, а затем переходит на другую страницу этого же сайта, то основываясь только на средствах, предоставляемых протоколом HTTP невозможно установить, что оба запроса относятся к одному пользователю. Т. о. необходим метод, при помощи которого было бы отслеживать информацию о пользователе в течение одного сеанса связи с Web-сайтов. Одним из таких методов является управление сеансами при помощи предназначенных для этого функций. Для нас важно то, что сеанс по сути, представляет собой группу переменных, которые, в отличие от обычных переменных, сохраняются и после завершения выполнения PHP-сценария.

Механизм работы сессий Для начала должен существовать механизм, который бы позволил PHP идентифицировать каждого пользователя, запустившего сценарий. То есть при следующем запуске PHP нужно однозначно определить, кто его запустил: тот же человек, или другой. Делается это путем присвоения клиенту так называемого уникального идентификатора сессии. Чтобы этот идентификатор был доступен при каждом запуске сценария, PHP помещает его Cookies браузера. Теперь, зная идентификатор (дальше SID), PHP может определить, в каком же файле на диске хранятся данные пользователя.

Немного о том, как сохранять переменную (обязательно глобальную) в сессии. Для этого мы должны ее зарегистрировать с помощью специальной функции. После регистрации мы можем быть уверены, что при следующем запуске сценария тем же пользователем она получит то же самое значение, которое было у нее при предыдущем завершении программы. Это произойдет потому, что при завершении сценария PHP автоматически сохраняет все переменные, зарегистрированные в сессии, во временное хранилище. Конечно, можно в любой момент аннулировать переменную — вычеркнуть ее из сессии, или же уничтожить вообще все данные сессии.

При работе с сессиями различают следующие этапы:

  • · открытие сессии
  • · регистрация переменных сессии и их использование
  • · закрытие сессии

Открытие сессии Самый простой способ открытия сессии заключается в использовании функции session_start, которая вызывается в начале PHP-сценария:

session_start.

Синтаксис:

session_start ();

Эта функция проверяет, существует ли идентификатор сессии, и, если нет, то создает его. Если идентификатор текущей сессии уже существует, то загружаются зарегистрированные переменные сессии.

Регистрация переменных сессии После инициализации сессии появляется возможность сохранять информацию в су-перглобальном массиве $_SESSION. Пусть имеется файл index. php в котором в массив $_SESSION сохраняется переменная и массив.

// Инициируем сессию.

session_start ();

// Помещаем значение в сессию.

$_SESSION['name'] = «value» ;

// Помещаем массив в сессию.

$arr = array («first», «second», «third»);

$_SESSION['arr'] = $arr;

// Выводим ссылку на другую страницу.

echo «другая страница» ;

?>

На страницах, где происходит вызов функции session_start (), значения данных переменных можно извлечь из суперглобального массива $_SESSION. В следующем листинге приводится содержимое страницы other. php, где извлекаются данные, ранее помещенные на странице index.php.

// Инициируем сессию.

session_start ();

// Выводим содержимое суперглобального массива $_SESSION.

echo «» ;

print_r ($_SESSION);

echo «» ;

?>

Результат работы скрипта выглядит следующим образом:

Array.

([name] => value.

[arr] => Array ([0] => first.

[1] => second.

[2] => third)).

Закрытие сессии После завершения работы с сессией сначала нужно разрегистрировать все переменные сессии, а затем вызвать функцию unset ():

Синтаксис:

unset ($_SESSION[" username" ]);

Пример простой сессии Рассмотрим пример простой сессии, работающей с тремя страницами. При посещении пользователем первой страницы открывается сессия и регистрируется переменная $username. Соответствующий код реализации приведен в листинге:

.

session_start ();

$_SESSION['username'] = «maksim» ;

echo 'Привет, '.$_SESSION['username']. ««;

?>

На следующую страницу.

Результат работы этого сценария показан на рисунке:

Настройка веб-сессиий. Настройка веб-сессиий.

После этого, пользователь maksim нажимает на ссылку и попадает на страницу page2. php, код которой приведен в листинге:

.

session_start ();

echo $_SESSION['username']. ', ты пришел на другую страницу этого сайта!';

echo (««);

?>

На следующую страницу.

Результат работы этого сценария показан на рисунке:

Настройка веб-сессиий. Настройка веб-сессиий.

При нажатии на ссылку, пользователь попадает на страницу page3. php, при этом происходит разрегистрация сеансовой переменной и уничтожение сессии. Соответствующий код реализации приведен в листинге:

.

session_start ();

unset ($_SESSION['username']); // разрегистрировали переменную.

echo 'Привет, '.$_SESSION['username'];

/* теперь имя пользователя уже не выводится */.

session_destroy (); // разрушаем сессию.

?>

Как видно из рисунка, после разрегистрации сеансовой переменной значение массива $_SESSION['username'] уже недоступно:

Настройка веб-сессиий. Настройка веб-сессиий.

Использованные ссылки.

  • 1. http://www.spravkaweb.ru/php/managfun/session
  • 2. http://www.softtime.ru/bookphp/gl81.php
  • 3. http://php.spb.ru/php/session.html
Показать весь текст
Заполнить форму текущей работой