Создание сеанса

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

Функция session_start() не имеет параметров, а возвращает всегда true.

Вызов функции session_start() должен предшествовать выводу какой-либо информации в браузер.

iРассмотрим механизм создания сеанса.

1. При вызове в сценарии функции session_start() интерпретатор PHP проверяет, был ли создан сеанс ранее. Если сеанс уже создан на какой-то странице сайта, то переменные сеанса (созданные на других страницах) устанавливаются для данного сценария. Если сеанс еще не существует, то создается новый сеанс, для которого автоматически генерируется уникальный идентификатор (длинная строка символов). Идентификатор сеанса присваивается глобальной предопределенной переменной $PHPSESSID.

2. В пределах существующего сеанса (после вызова функции session_start()
можно установить сеансовые переменные. Для этого служит суперглобальный массив $_SESSION. Чтобы присвоить значение переменной, используется такой синтаксис:

$_SESSION['имя_переменной']= значение;

Чтобы удалить сеансовую переменную, можно применить функцию:

unset($_SESSION['имя_переменной']);

3. Все переменные сеанса сохраняются на сервере в файле с именем, совпадающим с идентификатором сеанса. Можно самому определить папку для хранения файлов сеансов. Такая предварительно созданная папка задается директивой session.save_path в конфигурационном файле php.ini. Файл сеанса доступен для всех сценариев в пределах данного сеанса.

4. Интерпретатор РНР передает идентификатор сеанса каждой странице. Передача данных между сервером и клиентом происходит с использованием cookie или без него. Механизм cookie применяется, если пользователь браузера не отключил его. В противном случае работа определяется директивой session.use_trans_sid в конфигурационном файле php.ini,о чем будет рассказано позже.

Можно заставить интерпретатор автоматически добавлять функцию| session_start() в начале каждой серверной страницы. Для этого необходимо в конфигурационном файле php.ini записать директиву

session.auto_start =1.

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

В ряде случаев требуется принудительно закрыть сеанс. Например, при организации посещения сайта через регистрационное имя (login) и пароль для каждого посетителя создается отдельный сеанс. После проверки этих данных следует закрыть сеанс. Для этого служит встроенная функция session_destroy(), которая удаляет все переменные сеанса и прекращает передачу идентификатора сеанса. Однако в текущем сценарии эти переменные остаются доступными, и для их удаления следует воспользоваться функцией unset().


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: