# Manipulação de Sessão

# 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.

Cuidado

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.

Aviso

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.

> Nota:

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

- Instalação/Configuração
  - Dependências
  - Instalação
  - Configurações em Execução
- Constantes predefinidas
- Exemplos
  - Uso básico
  - Passando o ID de sessão
  - Manipuladores de Sessão Personalizados
- Progresso de Upload em Sessão
- Sessões e Segurança
  - Gerencimento básico de sessão
  - Protegendo as configurações INI relacionadas à sessão
- Funções para Sessão
  - session_abort — Descarta as alterações no array da sessão e encerra a sessão
  - session_cache_expire — Obter e/ou definir a expiração do cache atual
  - session_cache_limiter — Obtém e/ou define o limitador do cache atual
  - session_commit — Sinônimo de session_write_close
  - session_create_id — Cria novo ID de sessão
  - session_decode — Decodifica dados de sessão de uma sessão codificada em formato string
  - session_destroy — Destrói todos os dados registrados em uma sessão
  - session_encode — Codifica os dados atuais da sessão como uma sessão codificada em formato string
  - session_gc — Executa a coleta de lixo de dados da sessão
  - session_get_cookie_params — Obtém os parâmetros do cookie da sessão
  - session_id — Obtém e/ou define o id de sessão atual
  - session_module_name — Obtém e/ou define o módulo da sessão atual
  - session_name — Obtém e/ou define o nome da sessão atual
  - session_regenerate_id — Atualiza o id da sessão atual com um novo id gerado
  - session_register_shutdown — Função de finalização da sessão
  - session_reset — Reinicializa um array de sessão com os valores originais
  - session_save_path — Obtém e/ou define o caminho para armazenamento da sessão atual
  - session_set_cookie_params — Define os parâmetros do cookie de sessão
  - session_set_save_handler — Define funções de armazenamento de sessão à nível de usuário
  - session_start — Inicia uma nova sessão ou continua uma sessão existente
  - session_status — Retorna o status atual da sessão
  - session_unset — Libera todas as variáveis de sessão
  - session_write_close — Guarda os dados de sessão e fecha a sessão
- SessionHandler — A classe SessionHandler
  - SessionHandler::close — Fecha a sessão
  - SessionHandler::create_sid — Retorna um novo ID de sessão
  - SessionHandler::destroy — Destrói uma sessão
  - SessionHandler::gc — Apaga sessões antigas
  - SessionHandler::open — Inicia uma sessão
  - SessionHandler::read — Lê os dados de sessão
  - SessionHandler::write — Escreve os dados de sessão
- SessionHandlerInterface — A classe SessionHandlerInterface
  - SessionHandlerInterface::close — Fecha a sessão
  - SessionHandlerInterface::destroy — Destrói uma sessão
  - SessionHandlerInterface::gc — Remove sessões antigas
  - SessionHandlerInterface::open — Inicializa uma sessão
  - SessionHandlerInterface::read — Lê os dados de sessão
  - SessionHandlerInterface::write — Escreve os dados de sessão
- SessionIdInterface — The SessionIdInterface interface
  - SessionIdInterface::create_sid — Cria um ID de sessão.
- SessionUpdateTimestampHandlerInterface — The SessionUpdateTimestampHandlerInterface interface
  - SessionUpdateTimestampHandlerInterface::updateTimestamp — Atualiza o timestamp
  - SessionUpdateTimestampHandlerInterface::validateId — Valida o ID

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open