Библиотека 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.
Низкого качества покрытия металлических поверхностей могут привести к их преждевременной коррозии. Поэтому для контроля качества, нанесенного на поверхность металла защитного слоя, используют толщиномер покрытий. Подобные современные приборы позволяют определить толщину слоя покрытия, не нарушая его целостности. Эти приборы используются достаточно широко в судостроительной, автомобильной промышленности.