8.5. Поддержка сеансов
Представленные в этом разделе функции работают с возможностями поддержки сеансов, которым располагает PHP. Возможность поддержки сеансов берет свое начало в таких технологиях, как Microsoft ASP и PHPLIB. Первоначальный замысел заключался в сохранении глобальных переменных, которые регистрируются как часть сеанса и сохраняются при загрузке каждой новой страницы. Разработчики PHP уже ушли от простых глобальных переменных, созданных в начале, и я нахожу целесообразным представлять эти функции в таком стиле. Поэтому можно порекомендовать использовать массив _SESSION вместо register_globals, что позволяет создать компактный и простой код. О назначении и применении сеансов см. в главе 7, "Операции ввода-вывода и доступ к диску".
Сеансы обслуживаются передаваемыми между сервером и браузером файлами cookie, в которых хранятся уникальные значения. Файлы cookie индексируют записи в системном кэше сеансов. Все значения в _SESSION записываются в кэш после завершения работы сценария. PHP восстанавливает содержимое массива _SESSION при обработке следующего запроса. Сеансы можно запустить вручную с помощью функции session_start или с помощью директивы session.auto_start в конфигурационном файле php.ini настроить PHP таким образом, чтобы он автоматически запускал сеансы.
Программный код, представленный в листинге 8.7, создает сеанс, и при этом инициализируются три переменные. Сценарий инкрементирует счетчик после каждого запроса, что свидетельствует о том, что PHP хранит значение счетчика сеанса и модифицирует его по завершении работы сценария.
| Листинг 8.7. Сеансовые переменные_
<?php
// запуск сеанса session_start();
//инициализировать набор переменных сеанса if(!isset($_SESSION['a']))
{
print("Инициализация сеанса <br>"); $_SESSION['a'] = 'Переменная сеанса A',-$_SESSION['b'] = 123.45; $_SESSION['c'] = 0;
}
//Модифицировать сеанс со счетчиком доступов $_SESSION['c']++;
print("Счетчик обращений: " . $_SESSION['c'] . "<br>"); print("Дамп сеанса: " . session_encode() . "<br>");
?>
Так как сеансы используют файлы cookie, необходимо помнить, что последние соответствуют определенным доменам. Вы можете обнаружить, что файлы cookie, созданные для домена www1.yourdomain.com, теряются при переходе на домен www2.yourdomain.com. Во многих случаях выход есть: можно отредактировать конфигурационный файл php.ini или воспользоваться директивой session_set_ cookie_params.
boolean output_add_rewrite_var(string name, string value)
Функция output_add_rewrite_var добавляет переменную и ее значение в реестр переменных, который добавляется ко всем URL. Дескриптор сеанса использует эту функциональную возможность для добавления к идентифицирующим тегам, отсылаемым в браузер идентификатора сеанса.
boolean output_reset_rewrite_vars()
Функция output_reset_rewrite_vars удаляет реестр переменных, добавленных ко всем URL.
integer session_cache_expire(integer minutes)
Функция session_cache_expire возвращает время в минутах, на протяжении которого сеанс может оставаться неактивным до того, как истечет срок его действия и система удалит его. Значение срока можно изменять. По умолчанию длительность сеансов составляет 180 минут.
string session_cache_limiter(string limiter)
Функция session_cache_limiter возвращает метод ограничения кэширования страниц, сгенерированных браузером. Необязательный аргумент позволяет вносить изменение в это ограничение. По умолчанию система использует установку nocache, которая предотвращает кэширование страниц большинством браузеров. Поддержка сеансов PHP предполагает, что срок действия страниц, для которых требуются идентификаторы сеансов, немедленно истекает. Это разумное допущение, но так бывает далеко не всегда. Эта функция позволяет отменить установку, сделанную в конфигурационном файле php.ini. В табл. 8.4 представлены четыре варианта ограничения и заголовки HTTP, которые они позволяют получить. Дата 19 ноября 1981 года - это прошедшая дата, при задании которой браузеры не будут кэшировать страницы; 10800 - это время в секундах, которое может изменяться в зависимости от значения, установленного функцией session_cache_expire. Время истечения срока действия, заданное ограничением public, является текущим временем. Для того чтобы лучше понять смысл информации, приведенной в табл. 8.4, следует обратить внимание на спецификацию HTTP/1.1 (<http://www.w3.org/Protocols/ rfc2068/rfc2068>).
boolean session_decode(string code)
Функция session_decode используется для чтения зашифрованных данных сеанса и значений глобальных переменных, использованных в сеансе. Это происходит автоматически при запуске сеанса функцией session_start.
boolean session_destroy()
Функция session_destroy уничтожает все данные, имеющие отношение к сеансу. Однако при этом не уничтожаются глобальные переменные, связанные с сеансом.
string session_encode()
Функция session_encode возвращает строку, содержащую зашифрованную информацию о текущем сеансе.
array session_get_cookie_params()
Функция session_get_cookie_params возвращает массив, описывающий файлы cookie данного сеанса. Возвращенный массив содержит следующие ключи: domain, lifetime, path и secure.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Браузер ввода-вывода. Часть Пятая.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
PHP. Браузер ввода-вывода. Часть Четвёртая. | PHP. Браузер ввода-вывода. Часть Шестая. |