1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 07:42:22 +01:00
Files
2024-01-15 19:26:18 +03:00

106 lines
5.6 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ba6a83ca3558574695be5ef0a0e008e4e5f78ddb Maintainer: aur Status: ready -->
<!-- Reviewed: no -->
<book xml:id="book.session" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<?phpdoc extension-membership="bundled" ?>
<title>Управление сессиями</title>
<titleabbrev>Сессии</titleabbrev>
<!-- {{{ preface -->
<preface xml:id="intro.session">
&reftitle.intro;
<para>
Поддержка сессий в PHP состоит в сохранении набора данных
между последовательными доступами.
</para>
<para>
Каждому посетителю сайта присваивается уникальный идентификатор,
называемый идентификатором сессии (session id).
Он хранится либо в cookie на стороне пользователя, либо передаётся через URL.
</para>
<para>
Поддержка сессий помогает сохранять данные между запросами
в суперглобальном массиве <varname>$_SESSION</varname>. Когда посетитель заходит
на сайт, PHP автоматически (если для директивы <link
linkend="ini.session.auto-start">session.auto_start</link> установлено значение 1)
или по запросу (явным образом через вызов функции <function>session_start</function>) проверяет,
был ли конкретный идентификатор сессии отправлен вместе с запросом. Если это так,
восстанавливается сохранённое ранее окружение.
</para>
<caution>
<para>
Если директива <link linkend="ini.session.auto-start">
session.auto_start</link> включена, то единственный способ поместить объекты
в сессию — это загрузить определение класса этого объекта черер директиву
<link linkend="ini.auto-prepend-file">auto_prepend_file</link>, иначе
придётся выполнить сериализацию
(функцией <function>serialize</function>) и десериализацию
(функцией <function>unserialize</function>) объекта вручную.
</para>
</caution>
<para>
Суперглобальная переменная <varname>$_SESSION</varname> (и все зарегистрированные переменные)
сериализуются внутри PHP после выполнения запроса, используя обработчик сериализации, заданный
в INI-опции <link linkend="ini.session.serialize-handler">session.serialize_handler</link>.
Зарегистрированные, но неопределённые переменные помечаются как
неопределённые. При повторном доступе они не будут определены сессионным
модулем, если пользователь заново не определит их.
</para>
<warning>
<para>
Поскольку сессионные данные сериализуются, переменные с типом
<type>resource</type> не могут храниться в сессиях.
</para>
<para>
Обработчики сериализации (<literal>php</literal>
и <literal>php_binary</literal>) наследуют ограничения директивы register_globals.
Поэтому нельзя использовать числовые или строковые индексы, содержащие
специальные символы (<literal>|</literal> и <literal>!</literal>).
Они приведут к ошибкам при завершении работы скрипта.
У обработчика <literal>php_serialize</literal> такие ограничения отсутствуют.
</para>
</warning>
<note>
<para>
Заметьте, при работе с сессиями запись в сессии не создаётся
до тех пор, пока переменная не будет зарегистрирована
в суперглобальном массиве <varname>$_SESSION</varname>. Это правило
будет применяться независимо от того, запускалась ли сессия
функцией <function>session_start</function>.
</para>
</note>
</preface>
<!-- }}} -->
&reference.session.setup;
&reference.session.constants;
&reference.session.examples;
&reference.session.upload-progress;
&reference.session.security;
&reference.session.reference;
&reference.session.sessionhandler;
&reference.session.sessionhandlerinterface;
&reference.session.sessionidinterface;
&reference.session.sessionupdatetimestamphandlerinterface;
</book>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->