Introdução
O suporte a sessões no PHP consiste em uma maneira de preservar certos dados atráves dos acessos subsequentes.
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.
O suporte à sessão permite armazenar dados entre as requisições no array super global $_SESSION. Quando um visitante acessar seu site, o PHP vai conferir automaticamente (se session.auto_start estiver definido como 1) ou quando você pedir (explicitamente atráves de session_start()) se um id de sessão específico foi enviado com a requisição. Se este for o caso, o ambiente anteriormente salvo é recriado.
Se você ativar session.auto_start, então a única maneira de colocar objetos em suas sessões é carregando a definição da classe usando auto_prepend_file, onde você pode carregar a definição da classe, caso contrário você terá que usar serialize() no objeto, e unserialize() nele depois.
$_SESSION (e todas as variávels registradas) são serializadas internamente pelo PHP usando o manipulador de serialização especificado pela configuração INI session.serialize_handler 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.
Porque as variáveis de sessão são serializadas, variáveis resource não podem ser armazenadas em sessão.
Manipuladores de serialização (php
e php_binary
) herdam as limitações de
register_globals. Portanto, índices numéricos ou strings contendo
caracteres especiais (|
e !
) não podem ser usados. Se usados, resultará em
erros na finalização do script. php_serialize
não possui tais limitações.
Note:
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 $_SESSION. Isto continua valendo mesmo se uma sessão tenha sido iniciada usando a função session_start().