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.

Caution

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.

Warning

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().