Сеанс работы пользователя
Публикация прежнего Webclub · 2008 год. Примеры и сведения сохранены в историческом контексте.
Библиотека PHPLib предоставляет возможности, по меньшей мере, не уступающие возможностям встроенной библиотеки управления сеансами PHP. Даже имена функций в этих библиотеках часто совпадают. Но хотя во многих отношениях механизмы встроенного управления сеансами PHP и библиотеки PHPLib похожи, есть и различия. Одной из полезных дополнительных возможностей библиотеки PHPLib является режим автоматического переключения методов повторной генерации идентификатора сеанса, который рассматривается в следующем разделе.
Запасной режим повторной генерации идентификатора сеанса
По умолчанию все средства управления сеансами работают через файлы персональных Интернет-настроек (cookies). Как подчеркивалось в главе 4, этот метод является предпочтительным (если он поддерживается клиентом); кроме того, это самый простой способ повторной генерации идентификатора сеанса. Но вы можете вместо него использовать методику, основанную на запросах GET/POST, изменив значение всего одной переменной - $mode. Переменная $mode определяет метод, который следует использовать в качестве основного метода повторной генерации идентификатора сеанса. Эта переменная может принимать значения cookie (установленное по умолчанию) и get.
Библиотека PHPLib обеспечивает автоматический переход к запасному методу повторной генерации идентификатора сеанса в ходе выполнения сценария. Если значение переменной $fallback_mode установлено равным get, а режим, заданный переменной $mode (обычно это cookie), не поддерживается клиентом, то будет использоваться метод GET/POST. Наилучшим вариантом является установка значения переменной $mode равным cookie, а переменной $fallback_mode - равным get. В этом случае библиотека PHPLib попытается использовать методику на основе персональных настроек, но если это не удастся, она перейдет в запасной режим GET/POST. Библиотека PHPLib проверяет, поддерживается ли на клиентском компьютере механизм персональных настроек, следующим образом.
-
При первом запросе к странице, поддерживаемой библиотекой PHPLib, библиотека пытается создать файл персональных настроек сеанса, одноименный с соответствующим экземпляром класса Session.
-
Затем она повторно отправляет пользователя на ту же страницу, добавляя в качестве строки запроса идентификатор сеанса:
header("Location: ".$PROTOCOL. "://" .HTTP_HOST.$this->self_url());
-
Библиотека PHPLib проверяет, существует ли данный идентификатор сеанса в массиве $HTTP_COOKIE_VARS. Если да, то сеанс проходит в режиме cookie. В противном случае сеанс переключается в режим get.
