🚀 Capítulo 08: Camadas de Dados (Tema: Inception)
NOTE
Este capítulo utiliza a temática de Inception (A Origem) para explicar as Sessões e Cookies em PHP. Aprenda a manter o usuário conectado mesmo mudando de página!
1. 🎯 Objetivo da Aula
Compreender a diferença entre Sessões ($_SESSION) e Cookies ($_COOKIE) em PHP, aprendendo a guardar informações do usuário que persistam enquanto ele navega pelo site.
2. 🏢 O Cenário Prático (Seu Desafio)
No filme Inception, os personagens entram em sonhos dentro de sonhos (várias camadas). Para não se perderem e saberem quem eles são de verdade em qualquer camada, eles usam um “totem” (um objeto pequeno que guarda a informação da realidade).
Na web comum, o protocolo HTTP é “desmemoriado” (stateless). Isso significa que quando você clica em um link e vai para outra página do mesmo site, o servidor esquece completamente quem você é! É como se você mudasse de camada de sonho e esquecesse o seu nome.
- Para resolver isso, o PHP usa as Sessões e os Cookies como os nossos totens! Eles guardam quem você é (se está logado, o que tem no seu carrinho) enquanto você muda de página. Seu desafio é manter a memória do sistema ativa!
🧠 Fundamentos: A Teoria Traduzida
🧠 1. Sessões ($_SESSION):
Os dados ficam guardados no servidor. É muito seguro porque o usuário não pode alterar os dados no computador dele. A sessão “morre” assim que o usuário fecha o navegador.
- Aviso: Você DEVE chamar o comando
session_start()no topo do arquivo antes de usar a sessão!
session_start();
$_SESSION["usuario"] = "Dominic Cobb"; // Guardou!🍪 2. Cookies ($_COOKIE):
Os dados ficam guardados no computador do usuário (no navegador). O usuário pode ver e alterar. Eles têm uma data de validade e continuam lá mesmo se o computador for reiniciado. São usados para lembrar preferências (como o modo escuro do site).
// Cria um cookie que dura 1 hora (3600 segundos)
setcookie("tema", "escuro", time() + 3600);graph TD A[Navegador do Usuário] -->|Guarda| B[Cookies] C[Servidor Web] -->|Guarda| D[Sessões]
4. 📖 Exemplo Guiado: Lembrar o Nome
Vamos criar uma página que lembra o nome do usuário usando Sessão:
<?php
session_start();
// Se o usuário já passou por aqui e deixou o nome:
if (isset($_SESSION["nome"])) {
echo "Bem-vindo de volta às camadas, " . $_SESSION["nome"] . "!";
} else {
// Se é a primeira vez, vamos guardar o nome dele
$_SESSION["nome"] = "Cobb";
echo "Identidade registrada. Agora podemos descer mais um nível!";
}
?>5. 🛠️ Prática Obrigatória 1: Onde Guardar?
- Você está criando o carrinho de compras de um e-commerce. Para garantir que o usuário não altere os preços dos produtos salvos no carrinho pelo navegador dele, onde você deve guardar essa lista de produtos: em uma Sessão ou em um Cookie? Por quê?
6. 🛠️ Prática Obrigatória 2: Iniciando a Memória
- Qual é a função do PHP que somos obrigados a chamar no início do arquivo para poder usar a variável
$_SESSION?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 08 PHP_Inception) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
spec_backend_com_php_e_laravel/
├── capitulos/
│ └── capitulo_08_inception.md💡 Checkpoint de Lógica
Os cookies são úteis, mas a nova lei geral de proteção de dados (LGPD) exige que você avise o usuário e peça autorização antes de guardar qualquer cookie no computador dele!
10. 🔥 Desafio de Fixação
Pesquise como destruir (apagar) todas as informações de uma sessão no PHP quando o usuário clica em “Sair” (Logout).
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- Deve guardar na Sessão. Como os dados da sessão ficam guardados de forma segura no servidor, o usuário não consegue burlar o sistema alterando os valores. Se guardássemos em cookies, um usuário mal-intencionado poderia alterar o preço do produto no arquivo de cookie do computador dele. Gabarito da Prática 2:
- É a função
session_start().