🚀 Capítulo 06: Capturando Pokémons (Tema: Pokémon)
NOTE
Este capítulo utiliza a temática de Pokémon para explicar como receber dados de formulários usando as superglobais
$_GETe$_POSTem PHP. Aprenda a capturar os dados que o usuário digita!
1. 🎯 Objetivo da Aula
Compreender como o PHP recebe informações enviadas pelo navegador do usuário através de formulários HTML, diferenciando os métodos GET e POST.
2. 🏢 O Cenário Prático (Seu Desafio)
Um mestre Pokémon está explorando o mapa e encontra um monstrinho selvagem. Para capturá-lo, ele joga uma Pokébola que envia os dados do Pokémon (nome, nível) direto para o sistema da Pokédex dele.
No desenvolvimento web, quando o usuário preenche um formulário no site (como login, cadastro ou busca) e clica em enviar, os dados viajam do navegador até o servidor PHP.
- O PHP possui “Pokébolas” especiais para capturar esses dados: as variáveis superglobais
$_GETe$_POST. Seu desafio é capturar esses dados sem deixar nenhum escapar!
🧠 Fundamentos: A Teoria Traduzida
🔍 1. O Método GET:
Os dados são enviados escancarados diretamente na URL (o endereço do site). É ótimo para buscas (como no Google), onde você pode copiar o link e mandar para um amigo com a busca pronta.
- Vantagem: É rápido e permite salvar nos favoritos.
- Desvantagem: Não serve para dados secretos (como senhas), pois qualquer um pode ler na barra de endereços.
// URL: meusite.com/buscar.php?nome=Pikachu
$busca = $_GET["nome"];
echo "Você buscou pelo Pokémon: " . $busca;📦 2. O Método POST:
Os dados são enviados escondidos, dentro do “corpo” da requisição. Ninguém vê nada na barra de endereços.
- Vantagem: Seguro para senhas e permite enviar arquivos grandes (como fotos).
- Desvantagem: Não dá para salvar o link da página com os dados preenchidos nos favoritos.
// Enviado por um formulário escondido
$usuario = $_POST["usuario"];
$senha = $_POST["senha"];4. 📖 Exemplo Guiado: Recebendo o Nome
Vamos criar um código que recebe o nome de um Pokémon via URL e exibe na tela:
<?php
// Verificamos se o parâmetro 'nome' foi enviado na URL
if (isset($_GET["nome"])) {
$pokemon = $_GET["nome"];
echo "Capturamos um " . $pokemon . "!";
} else {
echo "Nenhum Pokémon apareceu ainda...";
}
// Para testar, você acessaria: localhost:8000/arquivo.php?nome=Charmander
?>5. 🛠️ Prática Obrigatória 1: Escolhendo o Método
- Você está criando a tela de “Esqueci minha senha” onde o usuário digita o e-mail dele. Qual método você deve usar no formulário:
GETouPOST? Por quê?
6. 🛠️ Prática Obrigatória 2: Lendo os Dados
- Escreva a linha de código PHP que lê um campo de formulário enviado via
POSTchamadoidadee guarda o valor em uma variável$suaIdade.
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 06 PHP_Pokémon) 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_06_pokemon.md💡 Checkpoint de Lógica
Sempre use a função isset() antes de tentar ler um dado de $_GET ou $_POST. Se você tentar ler uma chave que não foi enviada pelo usuário, o PHP vai dar um erro de índice indefinido (Notice: Undefined index)!
10. 🔥 Desafio de Fixação
Pesquise sobre os perigos de segurança ao exibir na tela diretamente o que o usuário digitou no $_GET (pesquise sobre ataques do tipo XSS) e como a função htmlspecialchars() ajuda a nos proteger.
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- Deve usar o método
POST. Como estamos lidando com segurança e recuperação de contas, os dados (mesmo o e-mail) não devem ficar expostos na barra de endereços do navegador para evitar que fiquem salvos no histórico do navegador de computadores públicos. Gabarito da Prática 2:
$suaIdade = $_POST["idade"];