🚀 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 $_GET e $_POST em 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 $_GET e $_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

  1. 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: GET ou POST? Por quê?

6. 🛠️ Prática Obrigatória 2: Lendo os Dados

  1. Escreva a linha de código PHP que lê um campo de formulário enviado via POST chamado idade e guarda o valor em uma variável $suaIdade.

7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 06 PHP_Pokémon) e clique em Commit to main.
  2. 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:

  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"];

Capitulo Anterior | Proximo Capitulo