Files
2023-12-12 11:16:55 -03:00

111 lines
4.2 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ba6a83ca3558574695be5ef0a0e008e4e5f78ddb Maintainer: leonardolara Status: ready --><!-- CREDITS: fernandoc, marcosmarcolin, felipe, leonardolara -->
<book xml:id="book.session" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<?phpdoc extension-membership="bundled" ?>
<title>Manipulação de Sessão</title>
<titleabbrev>Sessões</titleabbrev>
<!-- {{{ preface -->
<preface xml:id="intro.session">
&reftitle.intro;
<para>
O suporte a sessões no PHP consiste em uma maneira de preservar certos dados
atráves dos acessos subsequentes.
</para>
<para>
Um visitante acessando o seu web site ganha um identificador único,
o assim chamado id de sessão. Ele é salvo em um cookie do lado do
usuário ou propagado via URL.
</para>
<para>
O suporte à sessão permite armazenar dados entre as requisições no
array super global <varname>$_SESSION</varname>. Quando um visitante acessar
seu site, o PHP vai conferir automaticamente (se <link linkend="ini.session.auto-start">session.auto_start</link>
estiver definido como 1) ou quando você pedir (explicitamente atráves de
<function>session_start</function>) se um id de sessão específico
foi enviado com a requisição. Se este for o caso, o ambiente
anteriormente salvo é recriado.
</para>
<caution>
<para>
Se você ativar <link linkend="ini.session.auto-start">
session.auto_start</link>, então a única maneira de colocar objetos
em suas sessões é carregando a definição da classe usando
<link linkend="ini.auto-prepend-file">auto_prepend_file</link>,
onde você pode carregar a definição da classe, caso contrário você terá que
usar <function>serialize</function> no objeto,
e <function>unserialize</function> nele
depois.
</para>
</caution>
<para>
<varname>$_SESSION</varname> (e todas as variávels registradas) são serializadas
internamente pelo PHP usando o manipulador de serialização especificado pela
configuração INI <link linkend="ini.session.serialize-handler">session.serialize_handler</link>
depois que a requisição terminar. Variáveis registradas que estejam indefinidas são
marcadas como não definidas. Nos acessos subsequentes, elas não são definidas
pelo módulo da sessão, a menos que o usuário as definam posteriormente.
</para>
<warning>
<para>
Porque as variáveis de sessão são serializadas, variáveis <type>resource</type> não podem
ser armazenadas em sessão.
</para>
<para>
Manipuladores de serialização (<literal>php</literal>
e <literal>php_binary</literal>) herdam as limitações de
register_globals. Portanto, índices numéricos ou strings contendo
caracteres especiais (<literal>|</literal>
e <literal>!</literal>) não podem ser usados. Se usados, resultará em
erros na finalização do script. <literal>php_serialize</literal>
não possui tais limitações.
</para>
</warning>
<note>
<para>
Por favor, note que ao trabalhar com sessões, um registro de uma sessão
não é criado até que uma variável tenha sindo registrada pela adição de uma nova
chave ao array super global <varname>$_SESSION</varname>. Isto
continua valendo mesmo se uma sessão tenha sido iniciada usando a função
<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
-->