Настройка предельного времени продолжительности сеанса



По истечении определенного времени вполне разумно было бы автоматически закрыть сеанс пользователя – в этом и состоит понятие предельного времени ожидания. PHP позволяет задать эту продолжительность. Лучший способ – изменить содержимое файла .htaccess. Файл .htaccess воздействует на HTML- и PHP-файлы, расположенные в том же каталоге. Это позволяет изменять настройки, не меняя содержимое файлов настройки веб-сервера Apache. Любые изменения в файле .htaccess будут применяться к файлам в подкаталогах, если в них отсутствуют собственные файлы .htaccess.

В примере ниже мы изменили предельное время продолжительности сеанса с помощью параметра session.gc_maxlifetime:

Файл .htaccess

<IfModule mod_php4.c>

php_value session.gc_maxlifetime "14400"

</IfModule>

В параметре session.gc_maxlifetime время задается в секундах, то есть если требуется установить предельное время продолжительности сеанса равным 30 мин, следует подставить значение 1800. Кроме того, можно изменить это значение прямо из PHP-сценария:

Код PHP

<?php

ini_set("session.gc_maxlifetime", "14400");

?>

Данный фрагмент также устанавливает предельное время ожидания в 14 400 с.

Функции поддержки сеанса

Выше мы описали две наиболее часто используемые PHP-функции для работы с сеансами - session_start() и session_destroy(). В таблице ниже приведены остальные функции, относящиеся к сеансам, с описанием назначения каждой из них. Обратите внимание на то, что в некоторых случаях результаты выполнения рассматриваемых функций зависят от значений параметров конфигурации:

Общие сведения о функциях поддержки сеансов

Функция Описание
session_register() Принимает в качестве параметра строку и регистрирует переменную с именем, обозначенным этой строкой, например session_register('usemame'). Использование этой функции не рекомендуется по соображениям безопасности.
session_unregister() Принимает в качестве параметра строку с именем переменной и отменяет регистрацию соответствующей переменной в сеансе. Т.к. используется в связке с session_register(), не рекомендуется к использованию.
session_is_registered() Принимает строку с именем переменной и проверяет, зарегистрирована ли переменная с данным именем переменной в текущем сеансе. Т.к. используется в связке с session_register(), не рекомендуется к использованию.
session_unset() Вызывается без параметров и освобождает все переменные в сеансе. Может приводить к опасным последствиям, если используется в сочетании с массивом $_SESSION, вместо нее рекомендуется использовать функцию unset()
session_write_close() Позволяет закрыть сеанс вручную и освободить блокировки записи, установленные на файлах данных. Необходимость в использовании этой функции возникает во время работы со страничными блоками; в некоторых ситуациях, связанных с кластеризацией; а также после выполнения действий, не позволяющих интерпретатору PHP обнаружить окончание сеанса (как в случае перенаправления)
session_name() Если вызов происходит без параметров, возвращает строку с именем текущего сеанса. По умолчанию это имя обычно представляет собой 'PHPSESSID'. После вызова с одним строковым параметром функция session_name() устанавливает текущее имя сеанса, равное этой строке. Имя сеанса используется в качестве ключа для поиска идентификатора сеанса в cookie-файле и параметрах GET/POST, поэтому успешный поиск идентификатора возможен, только если имя сеанса оставалось одним и тем же и на этапе сериализации, и на этапе выборки значений переменных сеанса. Следует отметить, что само изменение имени сеанса имеет смысл лишь в том случае, если требуется различать типы сеансов, обслуживаемых одним и тем же веб-сервером (например, когда используется несколько сайтов, на каждом из которых отслеживаются сеансы). Имя сеанса переустанавливается и принимает предусмотренное по умолчанию значение после каждого вызова сценария на выполнение, поэтому операция изменения имени должна предусматриваться в каждом сценарии, в котором используется имя, и осуществляться до вызова для работы в сеансе любых других функций
session_save_path() Возвращает (или устанавливает, если задан параметр) путь к каталогу, в котором должны быть записаны файлы с информацией связывания переменных сеансов (как правило, этот каталог в системах типа Unix принимает по умолчанию имя /tmp). Каталог должен существовать и иметь соответствующие значения прав доступа, для того, чтобы интерпретатор PHP мог записывать в нем файлы.
session_id() После вызова без параметров возвращает строку, которая является уникальным ключом, соответствующим конкретному сеансу. Если задан строковый параметр, устанавливает значение идентификатора сеанса, равное этой строке
session_regenerate_id() Не принимает параметров и задает новый идентификатор сеанса, в случае необходимости устанавливая новый cookie-файл. В случае успешного завершения возвращает значение true, а в случае неудачи возвращает false. В отличие от session_id() эта функция не возвращает строку с новым действующим идентификатором
session_encode() Возвращает строку, в которой закодировано состояние текущего сеанса, подходящую для использования в функции string_decode(). Полученная строка может служить для сохранения данных о сеансе (например, посредством записи закодированной строки в файл или базу данных) и последующего восстановления по истечении определенного времени
session_decode() Принимает в качестве параметра закодированную строку, которая получена с помощью функции session_encode(), и восстанавливает состояние сеанса, преобразуя результаты связывания переменных сеанса в связывания переменных страницы, по такому принципу, как и функция session_start()
session_get_cookie_params() Возвращает массив с текущими данными cookie-файла сеанса: lifetime (срок существования, измеряется в секундах, которые должны пройти до истечения срока существования; 0 означает, что срок существования не регламентируется), path (путь, для которого cookie-файл является допустимым), domain (домен, для которого cookie-файл является допустимым), secure (степень защищенности, которая показывает, действительно ли данный cookie-файл следует передавать только по соединениям SSL). Эти параметры обычно устанавливаются в файле php.ini, но могут быть изменены для одного сценария с помощью функции session_set_cookie_params()
session_set_cookie_params() Принимает четыре параметра указанные в описании функции session_get_cookie_params(). В параметре path следует обязательно предусмотреть заключительную косую черту.

 

Передача заголовков HTTP

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

Синтаксическая конструкция вызова функции header() предельно проста: эта функция принимает единственный строковый параметр, который представляет собой передаваемый заголовок.


Дата добавления: 2021-04-05; просмотров: 90; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!