<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/refs.basic.session.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'book.session.php',
    1 => 'Сессии',
    2 => 'Управление сессиями',
  ),
  'up' => 
  array (
    0 => 'refs.basic.session.php',
    1 => 'Модули для работы с сессиями',
  ),
  'prev' => 
  array (
    0 => 'refs.basic.session.php',
    1 => 'Модули для работы с сессиями',
  ),
  'next' => 
  array (
    0 => 'session.setup.php',
    1 => 'Установка и настройка',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/session/book.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/book.session.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="book.session" class="book">
 
 <h1 class="title">Управление сессиями</h1>
 

 
 <div id="intro.session" class="preface">
  <h1 class="title">Введение</h1>
  <p class="para">
   Поддержка сессий в PHP состоит в сохранении набора данных
   между последовательными доступами.
  </p>
  <p class="para">
   Каждому посетителю сайта присваивается уникальный идентификатор,
   называемый идентификатором сессии (session id).
   Он хранится либо в cookie на стороне пользователя, либо передаётся через URL.
  </p>
  <p class="para">
   Поддержка сессий помогает сохранять данные между запросами
   в суперглобальном массиве <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var>. Когда посетитель заходит
   на сайт, PHP автоматически (если для директивы <a href="session.configuration.php#ini.session.auto-start" class="link">session.auto_start</a> установлено значение 1)
   или по запросу (явным образом через вызов функции <span class="function"><a href="function.session-start.php" class="function">session_start()</a></span>) проверяет,
   был ли конкретный идентификатор сессии отправлен вместе с запросом. Если это так,
   восстанавливается сохранённое ранее окружение.
  </p>
  <div class="caution"><strong class="caution">Предостережение</strong>
   <p class="para">
    Если директива <a href="session.configuration.php#ini.session.auto-start" class="link">
    session.auto_start</a> включена, то единственный способ поместить объекты
    в сессию — это загрузить определение класса этого объекта черер директиву
    <a href="ini.core.php#ini.auto-prepend-file" class="link">auto_prepend_file</a>, иначе
    придётся выполнить сериализацию
    (функцией <span class="function"><a href="function.serialize.php" class="function">serialize()</a></span>) и десериализацию
    (функцией <span class="function"><a href="function.unserialize.php" class="function">unserialize()</a></span>) объекта вручную.
   </p>
  </div>
  <p class="para">
   Суперглобальная переменная <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> (и все зарегистрированные переменные)
   сериализуются внутри PHP после выполнения запроса, используя обработчик сериализации, заданный
   в INI-опции <a href="session.configuration.php#ini.session.serialize-handler" class="link">session.serialize_handler</a>.
   Зарегистрированные, но неопределённые переменные помечаются как
   неопределённые. При повторном доступе они не будут определены сессионным
   модулем, если пользователь заново не определит их.
  </p>
  <div class="warning"><strong class="warning">Внимание</strong>
   <p class="para">
    Поскольку сессионные данные сериализуются, переменные с типом
    <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> не могут храниться в сессиях.
   </p>
   <p class="para">
    Обработчики сериализации (<code class="literal">php</code>
    и <code class="literal">php_binary</code>) наследуют ограничения директивы register_globals.
    Поэтому нельзя использовать числовые или строковые индексы, содержащие
    специальные символы (<code class="literal">|</code> и <code class="literal">!</code>).
    Они приведут к ошибкам при завершении работы скрипта.
    У обработчика <code class="literal">php_serialize</code> такие ограничения отсутствуют.
   </p>
  </div>
  <blockquote class="note"><p><strong class="note">Замечание</strong>: 
   <p class="para">
    Заметьте, при работе с сессиями запись в сессии не создаётся
    до тех пор, пока переменная не будет зарегистрирована
    в суперглобальном массиве <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var>. Это правило
    будет применяться независимо от того, запускалась ли сессия
    функцией <span class="function"><a href="function.session-start.php" class="function">session_start()</a></span>.
   </p>
  </p></blockquote>
 </div>
 

 





 





 





 





 





 





 





 





 





 





<ul class="chunklist chunklist_book"><li><a href="session.setup.php">Установка и настройка</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="session.requirements.php">Требования</a></li><li><a href="session.installation.php">Установка</a></li><li><a href="session.configuration.php">Настройка во время выполнения</a></li></ul></li><li><a href="session.constants.php">Предопределённые константы</a></li><li><a href="session.examples.php">Примеры</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="session.examples.basic.php">Основы использования</a></li><li><a href="session.idpassing.php">Передача идентификатора сессии</a></li><li><a href="session.customhandler.php">Пользовательские обработчики сессии</a></li></ul></li><li><a href="session.upload-progress.php">Отслеживание хода загрузки файлов через сессии</a></li><li><a href="session.security.php">Безопасность сессий</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="features.session.security.management.php">Базовые принципы управления сессиями</a></li><li><a href="session.security.ini.php">INI-настройки безопасности сессий</a></li></ul></li><li><a href="ref.session.php">Функции для работы с сессиями</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="function.session-abort.php">session_abort</a> — Отменяет изменения в массиве сессии и завершает её</li><li><a href="function.session-cache-expire.php">session_cache_expire</a> — Получает и (или) устанавливает срок действия текущего кеша</li><li><a href="function.session-cache-limiter.php">session_cache_limiter</a> — Получает и (или) устанавливает текущий ограничитель кеша</li><li><a href="function.session-commit.php">session_commit</a> — Псевдоним session_write_close</li><li><a href="function.session-create-id.php">session_create_id</a> — Создаёт новый идентификатор сессии</li><li><a href="function.session-decode.php">session_decode</a> — Декодирует данные сессии из закодированной строки сессии</li><li><a href="function.session-destroy.php">session_destroy</a> — Уничтожает зарегистрированные данные сессии</li><li><a href="function.session-encode.php">session_encode</a> — Кодирует данные текущей сессии в формате строки сессии</li><li><a href="function.session-gc.php">session_gc</a> — Собирает мусорные данные сессии</li><li><a href="function.session-get-cookie-params.php">session_get_cookie_params</a> — Возвращает параметры cookie сессии</li><li><a href="function.session-id.php">session_id</a> — Получает и (или) устанавливает идентификатор текущей сессии</li><li><a href="function.session-module-name.php">session_module_name</a> — Возвращает и (или) устанавливает модуль текущей сессии</li><li><a href="function.session-name.php">session_name</a> — Получает и (или) устанавливает название текущей сессии</li><li><a href="function.session-regenerate-id.php">session_regenerate_id</a> — Генерирует и обновляет идентификатор текущей сессии</li><li><a href="function.session-register-shutdown.php">session_register_shutdown</a> — Регистрирует функцию завершения сессии</li><li><a href="function.session-reset.php">session_reset</a> — Реинициализирует сессию оригинальными значениями</li><li><a href="function.session-save-path.php">session_save_path</a> — Получает и (или) устанавливает путь сохранения текущей сессии</li><li><a href="function.session-set-cookie-params.php">session_set_cookie_params</a> — Устанавливает параметры cookie для сессии</li><li><a href="function.session-set-save-handler.php">session_set_save_handler</a> — Устанавливает пользовательские обработчики хранения сессии</li><li><a href="function.session-start.php">session_start</a> — Начинает или возобновляет сессию</li><li><a href="function.session-status.php">session_status</a> — Возвращает состояние текущей сессии</li><li><a href="function.session-unset.php">session_unset</a> — Освобождает переменные сессии</li><li><a href="function.session-write-close.php">session_write_close</a> — Записывает данные сессии и завершает её</li></ul></li><li><a href="class.sessionhandler.php">SessionHandler</a> — Класс SessionHandler<ul class="chunklist chunklist_book chunklist_children"><li><a href="sessionhandler.close.php">SessionHandler::close</a> — Закрывает сессию</li><li><a href="sessionhandler.create-sid.php">SessionHandler::create_sid</a> — Возвращает новый идентификатор сессии</li><li><a href="sessionhandler.destroy.php">SessionHandler::destroy</a> — Уничтожает сессию</li><li><a href="sessionhandler.gc.php">SessionHandler::gc</a> — Очищает старые сессии</li><li><a href="sessionhandler.open.php">SessionHandler::open</a> — Инициализирует сессию</li><li><a href="sessionhandler.read.php">SessionHandler::read</a> — Считывает данные сессии</li><li><a href="sessionhandler.write.php">SessionHandler::write</a> — Записывает данные сессии</li></ul></li><li><a href="class.sessionhandlerinterface.php">SessionHandlerInterface</a> — Класс SessionHandlerInterface<ul class="chunklist chunklist_book chunklist_children"><li><a href="sessionhandlerinterface.close.php">SessionHandlerInterface::close</a> — Закрывает сессию</li><li><a href="sessionhandlerinterface.destroy.php">SessionHandlerInterface::destroy</a> — Уничтожает сессию</li><li><a href="sessionhandlerinterface.gc.php">SessionHandlerInterface::gc</a> — Очищает старые сессии</li><li><a href="sessionhandlerinterface.open.php">SessionHandlerInterface::open</a> — Инициализирует сессию</li><li><a href="sessionhandlerinterface.read.php">SessionHandlerInterface::read</a> — Читает данные сессии</li><li><a href="sessionhandlerinterface.write.php">SessionHandlerInterface::write</a> — Записать данные сессии</li></ul></li><li><a href="class.sessionidinterface.php">SessionIdInterface</a> — Интерфейс SessionIdInterface<ul class="chunklist chunklist_book chunklist_children"><li><a href="sessionidinterface.create-sid.php">SessionIdInterface::create_sid</a> — Создать идентификатор сессии</li></ul></li><li><a href="class.sessionupdatetimestamphandlerinterface.php">SessionUpdateTimestampHandlerInterface</a> — Интерфейс SessionUpdateTimestampHandlerInterface<ul class="chunklist chunklist_book chunklist_children"><li><a href="sessionupdatetimestamphandlerinterface.updatetimestamp.php">SessionUpdateTimestampHandlerInterface::updateTimestamp</a> — Обновить метку времени</li><li><a href="sessionupdatetimestamphandlerinterface.validateid.php">SessionUpdateTimestampHandlerInterface::validateId</a> — Проверить идентификатор</li></ul></li></ul></div><?php manual_footer($setup); ?>