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
- O script PHP chama
session_start(). - O servidor gera um Session ID (ex:
phpsessid=abc123xyz). - Este Session ID é enviado ao navegador, geralmente através de um cookie temporário.
- Em requisições subsequentes, o navegador envia o Session ID de volta.
- 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ística | Cookies | Sessões |
| Local de Armazenamento | Cliente (Navegador) | Servidor (Disco/Memória) |
| Segurança | Baixa. 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/Limite | Limitada (geralmente 4KB por cookie). | Praticamente ilimitada (depende do servidor). |
| Persistência | Podem 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 flagHttpOnlypara 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:
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:












