A Magia das Sessões: Mantendo o Estado no PHP
•
3/September/2025
•
3 mins
Na aula anterior, falamos sobre a natureza sem estado do PHP. Ou seja, ele não “lembra” de nada entre uma requisição (o clique de um botão ou a navegação para uma nova página) e outra. As sessões resolvem esse problema, funcionando como uma memória temporária para o seu site.
Uma sessão é um mecanismo que permite armazenar informações do usuário no servidor para que elas possam ser acessadas em múltiplas páginas.
Passo a Passo: O Ciclo de Vida de uma Sessão
Seu código demonstra o ciclo completo de uma sessão: iniciar, armazenar dados, ler os dados e, por fim, destruir.
1. Iniciando uma Sessão
A primeira e mais importante etapa.
O Código:
session_start();
echo "Sessão iniciada!";
Como funciona:
- A função
session_start() deve ser a primeira coisa a ser executada em qualquer página que você deseja usar sessões.
- Quando essa função é chamada, o PHP verifica se já existe uma sessão para o usuário.
- Se não houver, ele cria uma nova sessão no servidor e envia um cookie (
PHPSESSID) para o navegador do usuário. Esse cookie é como uma “chave” que o navegador usará para se conectar àquela sessão específica em todas as requisições subsequentes.
- Se já existir uma sessão, a função simplesmente retoma a sessão existente, tornando os dados disponíveis.
2. Armazenando Dados na Sessão
Com a sessão iniciada, você pode armazenar informações usando o array global $_SESSION.
O Código:
$_SESSION['usuario'] = "admin";
$_SESSION['ultimo_login'] = date('d/m/Y H:i');
echo "Dados armazenados!";
Como funciona:
$_SESSION é um array especial do PHP.
- Você pode adicionar qualquer tipo de dado a ele: strings, números, arrays, ou até mesmo objetos.
- No exemplo,
$_SESSION['usuario'] e $_SESSION['ultimo_login'] funcionam como variáveis normais, mas seu valor será mantido mesmo se o usuário navegar para outra página.
3. Lendo Dados da Sessão
Para acessar as informações que você armazenou, basta chamar a variável de sessão correspondente.
O Código:
echo "Usuário: " . $_SESSION['usuario'] . "<br>";
echo "Último login: " . $_SESSION['ultimo_login'];
Como funciona:
- Supondo que você iniciou a sessão (
session_start()) no topo da página, o PHP irá automaticamente carregar os dados associados àquela sessão.
- Você pode então usar as variáveis de sessão como se fossem variáveis comuns, sabendo que os valores vêm do estado do usuário.
4. Destruindo uma Sessão
Esta é a etapa final, crucial para garantir a segurança, especialmente em sistemas de login.
O Código:
session_unset();
session_destroy();
echo "Sessão destruída!";
Como funciona:
session_unset(): remove todas as variáveis do array $_SESSION, mas a sessão em si ainda existe.
session_destroy(): remove o arquivo de sessão do servidor e invalida o PHPSESSID. É a forma mais segura de encerrar uma sessão.
- Após essas duas chamadas, o usuário não tem mais acesso às informações da sessão, e é como se ele nunca tivesse feito login.
Resumo: Onde Isso se Encaixa?
O sistema de autenticação que criamos na aula anterior depende totalmente das sessões. O fluxo ideal de um login é:
- O usuário preenche o formulário.
- O código PHP usa a classe
SistemaAutenticacao para validar os dados.
- Se a autenticação for bem-sucedida, você usa
session_start() e $_SESSION['usuario'] = $login; para “lembrar” que o usuário está logado.
- Em todas as páginas restritas, você usa
session_start() e verifica if (isset($_SESSION['usuario'])) para garantir que o usuário tem permissão para acessá-las.
- Quando o usuário clica em “Sair”, você chama
session_destroy() para encerrar a sessão de forma segura.