PHP: Trabalhando com Sessions


Olá pessoal!
Hoje vou postar um artigo que encontrei esses dias, e achei muito interessante, falando sobre Sessions no PHP, dá uma introdução bacana e mostra também vários exemplos, possui uma ótima a explicação.

O que é sessão?

A sessão ou session nos permite passar dados de uma página para outra, sem que haja perda de informação ou necessidade usar os métodos POST ou GET. Cada visitante ao acessar o site recebe um identificador único, a ser propagado via URL ou armazenado em um cookie na máquina do usuário. Podemos declarar inúmeras variáveis e associá-las a sessão do usuário, criando ambientes personalizados para cada usuário do nosso site. Para não dificultar a compreensão do conceito, vamos assumir que as variáveis de sessão ficarão armazenadas na sessão do usuário enquanto o seu navegador continuar aberto, ou enquanto a mesma não for encerrada (seja por inatividade, ou por intermédio de alguma função própria para esse fim). Uma vez encerrada, as variáveis de sessão não eliminadas.

Uma sessão é iniciada pela função session_start(), a ser colocada no topo da página, antes de qualquer outro código. Veja o exemplo abaixo:

Salvo em alguns casos especiais, sempre usaremos a função session_start() no início da página e antes de qualquer outro código. O que essa função faz é habilitar o uso de todas as variáveis de sessão dentro da página onde foi chamada, ou seja, dizemos ao PHP que essa página poderá fazer uso de variáveis de sessão e funções para gerenciamento da mesma. Toda sessão pode expirar por inatividade, pois possui algo chamado “tempo de vida” definido em 180 minutos, por padrão. Se precisarmos alterar o tempo de vida de uma função podemos fazer uso de funções específicas como session_cache_expire(), a serem estudadas mais a frente.

Array $_SESSION

Ok! Já entendemos o que é uma sessão, como iniciá-la e para o que ela serve, agora vamos descobrir como armazenar dados na sessão. Todas as informações gravadas em sessão ficam armazenadas em uma variável superglobal definida pelo próprio PHP, chamada $_SESSION. Trata-se de um array onde, uma vez iniciada a sessão, temos acesso aos seus campos e podemos adicionar campos novos. Veja o exemplo abaixo:

LOGIN.PHP

VALIDALOGIN.PHP

A única novidade no script acima é o uso da função header() que, dentre outras coisas, permite o redirecionamento do usuário de uma página para outra. Bem, vimos que esse script funciona em três tempos: o usuário entra com os dados de login na página LOGIN.PHP, esses dados são recebidos e tratados em VALIDALOGIN.PHP e, em caso de sucesso armazenamos dois dados em variáveis de SESSÃO, caso contrário devolvemos o usuário para a tela de login. Já sabemos como armazenar dados na sessão do usuário, agora veremos como resgatá-los. Ao redirecionar o usuário para a página HOME.PHP, devemos verificar se ele de fato está logado no sistema. Sabemos disso através da variável de sessão $_SESSION[“logado”], se ela existir e seu valor for TRUE, é porque o usuário fez login e senha corretamente. Vamos ao código:

HOME.PHP

Viram? Basta iniciar session_start() e todas as variáveis de sessão declaradas em qualquer lugar da aplicação, estarão disponíveis na página de chamada. Maneiro, né? A novidade do script acima fica por conta da função isset(), que verifica se uma variável existe e, em caso afirmativo retorna TRUE, caso contrário retorna FALSE.

Agora tratando das principais funções para gerenciamento de sessões em PHP.

session_start()

Essa função inicia a sessão do usuário, e disponibiliza para a página todas as variáveis de sessão desse usuário. Em resumo: somente iniciando a sessão, poderemos trabalhar com sessão em uma página. Ela sempre retorna TRUE. Outra coisa importante: sempre utilize a função session_start() no topo da página, acima de qualquer outro elemento, caso contrário ela pode não funcionar. Veja um exemplo de session_start() em funcionamento:

session_cache_expire()

Essa função modifica o tempo de expiração da sessão do usuário. Normalmente quando uma sessão fica inativa por mais de 180 minutos ela expira, apagando todas as variáveis gravadas nela. A função session_cache_expire() aumenta ou diminui o tempo de expiração de uma sessão. Recebe como parâmetro o tempo em minutos para expiração da sessão. Precisamos declarar essa função antes de session_start(). Veja um exemplo dessa função:

session_id()

Essa função retorna o ID da sessão, ou seja, um código identificador único para cada sessão de usuário. Essa função retorna o ID da sessão de usuário. Veja session_id() em funcionamento:

Essa função destrói a sessão e todos os dados associados a ela. Retorna TRUE em caso de sucesso, FALSE em caso de erro. Veja um exemplo da função em funcionamento:

Fonte: http://www.projetistadigital.com/tag/trabalhando-com-sessao-php/