Учебник по основам PHP. PHPBeginner



         

Сессии


Сессии позволяют реализовать единый механизм передачи данных между страницами сайта. Программная реализация имеется в библиотеке PHPLIB, но в РНР есть встроенная. Сессии работают по следующей схеме.

  • Пользователю, впервые посетившему сайт, присваивается уникальный идентификатор (идентификатор сессии). Этот идентификатор может быть сохранен в cookie (но не все браузеры их поддерживают) или в строке URL (тогда необходимо вносить значение идентификатора во все внутренние ссылки сайта, имеющиеся на каждой странице сайта).
  • Затем инициализируется массии, в котором будут храниться данные текущей сессии. Обычно данные сессии хранятся на сервере в файлах или базе данных.
  • В сценарии используются две основные функции: открытие сессии и внесение значения неременной в данные сессии.
  • При открытии сессии автоматически извлекаются ранее сохраненные переменные сессии.
  • При уничтожении сессии (обычно это делается автоматически, но прошествии времени устаревания) удаляются все се данные.
  • Внутренняя реализация сессий PIIP работает следующим образом. Если параметр конфигурации session.auto_start установлен (равен 1), то при запуске сценария сессия инициализируется автоматически (неявно вызывается функция session_start()). При этом проверяется существование идентификатора сессии и необходимость его создания.

    Явно добавить переменную к данным сессии позволяет функция session_register().

    Сохранение и восстановление переменных сессии определяется параметрами конфигурации track_vars (обычно он разрешен всегда) и register_globals.

    Если параметр register_g"lobals разрешен, то переменные сессии автоматически преобразуются в глобальные и обратно (также их значения доступны в массиве $HTTP_SESSION_VARS).

    <?php session_register
    ("count"): $count++: >>

    Если параметр register_globals запрещен, то тогда переменные сессии сохраняются только в глобальном ассоциативном массиве $НТТР_ SESSIONJARS.

    <?php session_register
    ("count");
    $HTTP_SESSION_VARS
    ["count"l++: ?>




    Содержание  Назад  Вперед