Печать

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

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

Сессии используются, когда необходимо сохранять информацию о пользователях на протяжении нескольких страниц и/или своевременно предоставлять пользователю новую информацию.

Этапы работы с сессиями:

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

Открытие сессии. Сессия открывается с помощью функции session_start(), которая вызывается в начале скрипта PHP. Эта функция проверяет, существует ли идентификатор сессии. Если нет, то создает его. Если идентификатор текущей сессии уже существует, то загружаются зарегистрированные переменные сессии.

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

Скрипт session1.php, который в массив $_SESSION сохранить имя пользователя:

<?php
// Инициируем сессию
session_start();
// Помещаем значение в сессию
$_SESSION['username'] = "test";
// Выводим ссылку на другую страницу
echo "<a href='session2.php'>Другая страница</a>";
?>

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

Следующий скрипт выведет имя пользователя, ранее сохраненное в скрипте session1.php.

Скрипт session2.php:

<?php
// Инициируем сессию
session_start();
// Выводим сохраненное имя пользоватлея
echo 'Здравствуйте, '.$_SESSION['username']."!<br>";
// Выводим ссылку на следующую страницу
echo "<a href='session3.php'>Следующая страница</a>";
?>

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

Скрипт session3.php:

<?
session_start();
// Разрегистрировали переменную
unset($_SESSION['username']);
// Разрушаем сессию
session_destroy();
?>

Контрольные вопросы и задания

  1. В скрипте session1.php добавить в массив $_SESSION добавить новый элемент.
  2. В скрипте session2.php выведите значение добавленного в session1.php нового элемента.
  3. В скрипте session3.php разрегистрировать элемент, добавленный в скрипте session1.php в массив $_SESSION.

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


Защитный код
Обновить

Произведение «OFTOB.COM» публикуется на условиях лицензии Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Непортированная.