Cookies e Sessions PHP

Capa Curso PHP
Tempo de leitura: 4 minutos

Cookies e Sessions PHP: Cookies e Sessões são mecanismos cruciais no desenvolvimento web que resolvem o problema da natureza stateless (sem estado) do protocolo HTTP. Eles permitem que as aplicações PHP “se lembrem” do usuário e mantenham informações persistentes (como status de login ou itens de um carrinho de compras) entre diferentes requisições de página.

1. 🍪 Cookies: Armazenamento no Cliente

Um Cookie é um pequeno arquivo de texto (ou um pedaço de dados) que o servidor web envia para ser armazenado no navegador do usuário (cliente). Ele é reenviado ao servidor a cada requisição subsequente, permitindo que o servidor identifique o usuário.

A. Criando Cookies

Você usa a função setcookie() para criar um cookie no navegador do usuário. Esta função deve ser chamada antes de qualquer saída HTML ser enviada ao navegador.

PHP

<?php
// setcookie(nome, valor, expiração, caminho, domínio, segurança, httpOnly)
// Expira em 1 hora (tempo atual + 3600 segundos)
setcookie("nome_do_cookie", "valor_do_cookie", time() + 3600, "/"); 

// Cookie persistente (expira em 30 dias)
setcookie("preferencia_tema", "dark", time() + (86400 * 30), "/"); 
?>

B. Lendo Cookies

Os cookies enviados pelo navegador são acessíveis na superglobal $_COOKIE, que é um array associativo.

PHP

<?php
if(isset($_COOKIE["nome_do_cookie"])) {
    echo "Valor do cookie: " . $_COOKIE["nome_do_cookie"];
} else {
    echo "Cookie não encontrado.";
}
?>

C. Excluindo Cookies

Para excluir um cookie, você deve chamar setcookie() novamente com o mesmo nome e definir um tempo de expiração que esteja no passado.

PHP

<?php
// Define a expiração para um momento anterior (ex: há 1 segundo)
setcookie("nome_do_cookie", "", time() - 1, "/"); 
?>

2. 🔑 Sessions: Armazenamento no Servidor

Uma Sessão é um mecanismo que armazena dados de estado no servidor, não no cliente. O servidor atribui um identificador único de sessão (Session ID) a cada usuário.

Como Funciona

  1. O script PHP chama session_start().
  2. O servidor gera um Session ID (ex: phpsessid=abc123xyz).
  3. Este Session ID é enviado ao navegador, geralmente através de um cookie temporário.
  4. Em requisições subsequentes, o navegador envia o Session ID de volta.
  5. O servidor usa o ID para recuperar o bloco de dados de sessão armazenado em disco (ou memória), que é carregado na superglobal $_SESSION.

A. Iniciando e Usando Sessões

Todas as páginas que usam sessões devem chamar session_start() no topo do script, antes de qualquer saída de dados.

PHP

<?php
// Deve ser chamada antes de qualquer saída
session_start();

// Armazenando dados na sessão (lado do servidor)
$_SESSION['nome'] = 'João';
$_SESSION['idade'] = 30;

// Recuperando valores
echo "Bem-vindo(a), " . $_SESSION['nome'];
?>

B. Encerrando e Destruindo Sessões

Para remover todos os dados de sessão e encerrar a sessão de forma segura:

PHP

<?php
session_start();

// 1. Limpa todas as variáveis da superglobal $_SESSION
$_SESSION = [];

// 2. Destrói o cookie de sessão no cliente
if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
    );
}

// 3. Destrói os dados de sessão armazenados no servidor/disco
session_destroy();
?>

3. ⚖️ Comparação e Segurança

A escolha entre Cookies e Sessões depende da sensibilidade e do volume dos dados.

CaracterísticaCookiesSessões
Local de ArmazenamentoCliente (Navegador)Servidor (Disco/Memória)
SegurançaBaixa. Dados visíveis no navegador, podem ser interceptados ou alterados.Alta. Apenas o ID (identificador) é visível para o cliente; os dados ficam seguros no servidor.
Capacidade/LimiteLimitada (geralmente 4KB por cookie).Praticamente ilimitada (depende do servidor).
PersistênciaPodem ser persistentes (configurado pela data de expiração).Geralmente temporária (expiram quando o navegador fecha ou por tempo limite).

Boas Práticas de Segurança

  • Sessões para Dados Sensíveis: Use sessões (variáveis $_SESSION) para armazenar dados de login, tokens de autenticação ou qualquer informação confidencial.
  • Flag HttpOnly: Ao configurar cookies (incluindo o cookie de Session ID), use a flag HttpOnly para impedir que scripts do lado do cliente (JavaScript) acessem o cookie. Isso mitiga ataques XSS.
  • Regeneração de ID de Sessão: Chame session_regenerate_id(true) após qualquer mudança de privilégio (ex: após um login bem-sucedido) para prevenir ataques de Session Fixation.

✅ Conclusão Cookies e Sessions PHP

Cookies e Sessions PHP: Cookies e Sessões são as ferramentas primárias para transformar o HTTP stateless em uma experiência interativa. Cookies são melhores para armazenar dados não sensíveis e preferências do usuário (lado do cliente). Sessões são o padrão de segurança para armazenar informações sensíveis, como dados de login e carrinhos de compra, mantendo a integridade dos dados no lado do servidor, com apenas um identificador de sessão exposto ao cliente. O uso seguro e combinado desses mecanismos é essencial para aplicações PHP modernas.

Toda jornada tem um início, e o início para se tornar um desenvolvedor back-end é dominar as seguintes tecnologias, que você encontra aqui mesmo:

SQL
SQL
Capa Curso PHP
PHP
Laravel
Laravel

E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi
Com mais de 20 anos de jornada na tecnologia, minha trajetória evoluiu do ensino técnico à arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de soluções de Inteligência Artificial nativa e análise de dados públicos, utilizando o ecossistema PHP para transformar dados brutos em transparência e eficiência. Como autor e desenvolvedor, acredito na democratização do conhecimento. Essa visão resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura até os bastidores da indústria de Jogos e IA. No universo de Game Design, sou autor do livro "GDD – O Guia Definitivo" e documento ativamente meus processos através de DevLogs, unindo rigor técnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso é conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.