Manipulação de Formulários e Interação com o Usuário em PHP 🐘 Etapa 08

 Seja muito bem-vindo à Academy Code Christ!


🌍 Academy Code Christ está disponível em vários idiomas.
Fique à vontade para usar o tradutor na Barra lateral (Sidebar) e aprender no seu idioma.

PHP 🐘 Etapa 08
Manipulação de Formulários 



📚 Continue sua jornada de aprendizado


A Academy Code Christ oferece trilhas de aprendizado em diferentes tecnologias. Explore os cursos, acompanhe as aulas e avance em sua jornada de conhecimento acessando os menus correspondentes:



💻 Pratique o que você aprende


🎯 O Que São Formulários HTML


Antes de o PHP processar algo, precisamos de uma forma de coletar dados.
 Para isso, usamos formulários HTML.

Um formulário é um conjunto de campos preenchidos pelo usuário, como:


<form method="POST" action="processa.php">

    Nome: <input type="text" name="nome"><br>

    Email: <input type="email" name="email"><br>

    <input type="submit" value="Enviar">

</form>

 

Esse código cria um pequeno formulário com dois campos.

Quando o usuário clica em “Enviar”, o navegador envia os dados para o arquivo especificado no atributo action (no caso, processa.php).

O atributo method define como os dados serão enviados:

●     GET → os dados vão pela URL (visíveis);


●     POST → os dados vão ocultos, dentro da requisição (mais seguro).


Recebendo Dados no PHP


Agora, no arquivo processa.php, coletamos e tratamos as informações enviadas:

<?php

$nome = $_POST["nome"];

$email = $_POST["email"];

 

echo "Olá, $nome!<br>";

echo "Seu e-mail é: $email";

?>

 

Ao enviar o formulário, a página exibirá:

Olá, Marcos!

Seu e-mail é: [email protected]

 

O PHP guarda as informações enviadas nos arrays superglobais:


●     $_GET — para formulários com método GET;

●     $_POST — para formulários com método POST;

●     $_REQUEST — aceita ambos (GET e POST).


Diferença Entre GET e POST


GET

<form method="GET" action="processa.php">

 

Os dados são enviados na URL:

processa.php?nome=João&[email protected]

 

Usado para pesquisas, filtros ou navegação leve.

🚫 Não recomendado para senhas ou dados sensíveis.

POST

<form method="POST" action="processa.php">

 

Os dados ficam ocultos, ideais para cadastros, logins e formulários mais longos.


Validando Entradas de Usuário


É essencial validar as informações que chegam antes de usá-las.
Sem validação, qualquer pessoa pode enviar dados incorretos — ou pior, maliciosos.

Exemplo:

<?php

if (empty($_POST["nome"]) || empty($_POST["email"])) {

    echo "Por favor, preencha todos os campos!";

} else {

    echo "Dados recebidos com sucesso!";

}

?>

 

Isso evita que campos vazios causem erros ou prejudiquem o sistema.

Você também pode validar formatos:


if (!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) {

    echo "Email inválido!";

}

 

O PHP oferece dezenas de filtros prontos para validações seguras.


Exemplo Prático — Formulário Completo de Contato


Crie um formulário HTML básico:

<form method="POST" action="contato.php">

  Nome: <input type="text" name="nome"><br><br>

  Email: <input type="email" name="email"><br><br>

  Mensagem:<br>

  <textarea name="mensagem" rows="4" cols="50"></textarea><br><br>

  <input type="submit" value="Enviar">

</form>

 

E o arquivo contato.php:

<?php

if ($_SERVER["REQUEST_METHOD"] == "POST") {

 

    $nome = trim($_POST["nome"]);

    $email = trim($_POST["email"]);

    $mensagem = trim($_POST["mensagem"]);

 

    if (empty($nome) || empty($email) || empty($mensagem)) {

        echo "Por favor, preencha todos os campos!";

    } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

        echo "Email inválido!";

    } else {

        echo "<h3>Mensagem Recebida!</h3>";

        echo "Nome: $nome<br>";

        echo "Email: $email<br>";

        echo "Mensagem: $mensagem";

    }

}

?>

 

Esse exemplo verifica:

●     Se o método usado é POST;

●     Se os campos estão preenchidos;

●     Se o e-mail é válido. E depois exibe os resultados de forma amigável.


Exibindo Erros e Mantendo Dados Preenchidos


É muito frustrante preencher um formulário, errar um campo e perder tudo.
 Com o PHP, é fácil manter o que o usuário digitou:


<form method="POST">

    Nome: <input type="text" name="nome" value="<?php if (!empty($_POST['nome'])) echo $_POST['nome']; ?>"><br>

    Email: <input type="email" name="email" value="<?php if (!empty($_POST['email'])) echo $_POST['email']; ?>"><br>

    <input type="submit" value="Enviar">

</form>

 

Aqui o PHP insere novamente os dados digitados, caso haja erro na validação.


Trabalhando com Vários Campos (Checkbox, Radio, Select)


Formulários reais têm campos variados.
Veja como capturar esses diferentes tipos:

Checkbox (múltiplas escolhas):


<form method="POST">

  <label><input type="checkbox" name="interesse[]" value="PHP"> PHP</label><br>

  <label><input type="checkbox" name="interesse[]" value="HTML"> HTML</label><br>

  <label><input type="checkbox" name="interesse[]" value="CSS"> CSS</label><br>

  <input type="submit" value="Enviar">

</form>

 

Processamento:

<?php

if (!empty($_POST["interesse"])) {

    foreach ($_POST["interesse"] as $valor) {

        echo "Você escolheu: $valor <br>";

    }

} else {

    echo "Nenhuma opção selecionada.";

}

?>

 

Cada checkbox selecionado é enviado dentro de um array, permitindo manipular todos os valores facilmente.

Radio (uma escolha apenas):


<input type="radio" name="genero" value="Masculino"> Masculino

<input type="radio" name="genero" value="Feminino"> Feminino

 

No PHP:

$genero = $_POST["genero"];

 

Select (lista de opções):


<select name="cidade">

  <option value="sp">São Paulo</option>

  <option value="rj">Rio de Janeiro</option>

  <option value="mg">Minas Gerais</option>

</select>

 

No PHP:

$cidade = $_POST["cidade"];

 


Enviando e Processando Dados de Login


Simulemos um pequeno sistema de login:

login.html

<form method="POST" action="login.php">

  Usuário: <input type="text" name="usuario"><br><br>

  Senha: <input type="password" name="senha"><br><br>

  <input type="submit" value="Entrar">

</form>

 

login.php

<?php

$usuario = $_POST["usuario"];

$senha = $_POST["senha"];

 

if ($usuario == "admin" && $senha == "1234") {

    echo "Login realizado com sucesso.";

} else {

    echo "Usuário ou senha incorretos.";

}

?>

 

Embora simples, esse exemplo mostra a base do sistema de autenticação.
Em projetos reais, as senhas são criptografadas e validadas com banco de dados 
(veremos em etapas seguintes).


Formularização e Funções


O ideal é manter o código limpo:
 as funções processam as entradas enquanto o HTML exibe os resultados.

Exemplo:

function validarCampos($dados) {

    if (empty($dados["nome"]) || empty($dados["email"])) {

        return "Por favor, preencha todos os dados.";

    }

    if (!filter_var($dados["email"], FILTER_VALIDATE_EMAIL)) {

        return "Email inválido.";

    }

    return true;

}

 

if ($_POST) {

    $resultado = validarCampos($_POST);

    if ($resultado === true) {

        echo "Tudo certo! Dados prontos para envio.";

    } else {

        echo $resultado;

    }

}

 


Segurança Básica no Processamento de Formulários


Ao receber dados externos, nunca confie cegamente no que chega.
 Usuários (ou robôs) podem tentar enviar códigos maliciosos.

Recomendações:


1.     Usar htmlspecialchars() — evita execução de HTML/JS:

 echo htmlspecialchars($_POST["mensagem"]);

2.    Limitar tamanho dos campos com strlen().

3.    Validar tipo de dado, não apenas se está preenchido.

4.    Filtrar tudo antes de salvar em bancos de dados (veremos depois).

Essas práticas protegem contra ataques como XSS e injeção de código.


Upload de Arquivos com Formulário


Sim, o PHP também permite receber arquivos.

HTML:

<form method="POST" enctype="multipart/form-data">

  Selecione o arquivo: <input type="file" name="arquivo"><br><br>

  <input type="submit" value="Enviar">

</form>

 

PHP:

if (isset($_FILES["arquivo"])) {

    $nome = $_FILES["arquivo"]["name"];

    $temporario = $_FILES["arquivo"]["tmp_name"];

    $destino = "uploads/" . $nome;

 

    if (move_uploaded_file($temporario, $destino)) {

        echo "Arquivo enviado com sucesso!";

    } else {

        echo "Erro ao enviar arquivo.";

    }

}

 

⚠️ Certifique-se de criar a pasta uploads/ com permissão de gravação.
 Esse recurso é amplamente usado em cadastros de imagens, PDFs, etc.


Sistema Completo — Cadastro com Processamento PHP


Criaremos um exemplo combinando tudo:

index.html

<form method="POST" action="cadastro.php">

  Nome: <input type="text" name="nome"><br>

  Email: <input type="email" name="email"><br>

  Idade: <input type="number" name="idade"><br>

  <input type="submit" value="Cadastrar">

</form>

 

cadastro.php

<?php

if ($_SERVER["REQUEST_METHOD"] === "POST") {

    $nome = trim($_POST["nome"]);

    $email = trim($_POST["email"]);

    $idade = (int) $_POST["idade"];

 

    if (empty($nome) || empty($email) || empty($idade)) {

        echo "Todos os campos são obrigatórios.";

    } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

        echo "Email inválido.";

    } else {

        echo "<h3>Cadastro Realizado!</h3>";

        echo "Nome: " . htmlspecialchars($nome) . "<br>";

        echo "Email: " . htmlspecialchars($email) . "<br>";

        echo "Idade: $idade anos";

    }

}

?>

 

Esse tipo de estrutura é a espinha dorsal de sistemas de cadastro e consulta online.


Modularizando o Processamento de Formulários


A boa prática é separar:

●     O formulário HTML;

●     A lógica de validação (em funções);

●     O layout de resposta.

Por exemplo:

●     form.html → Formulário;

●     valida.php → Funções de validação;

●     resultado.php → Exibição de dados.

Essas divisões tornam os códigos limpos e reutilizáveis.


Dica de Profissional — Usando Sessões para Lembrar Dados


Em formulários longos, podemos usar sessões para salvar progresso.
 Isso é feito com:

session_start();

$_SESSION["nome"] = $_POST["nome"];

 

Depois, em qualquer página:

echo $_SESSION["nome"];

 

Sessões são fundamentais para lembrar usuários logados, carrinhos de compras e dados temporários — tema que será aprofundado nas próximas etapa.


Conclusão 

Nesta etapa, você viu como o PHP interage com o usuário de forma dinâmica.
 Aprendeu:

●     Como criar e processar formulários HTML;

●     Diferença entre GET e POST;

●     Como validar entradas e exibir mensagens amigáveis;

●     Como trabalhar com campos múltiplos, rádios, selects e uploads;

●     A importância da segurança ao receber dados;

●     E como modularizar o processo, mantendo o sistema limpo e profissional.


A manipulação de formulários é a porta de entrada para sistemas reais — todos os próximos recursos que aprenderemos se baseiam nessa comunicação entre usuário e servidor.


👣 Próximo passo:


Sessões, Cookies e Autenticação de Usuários, você aprenderá a controlar o estado do usuário entre páginas, criar sistemas de login persistente, e entenderá como funcionam os mecanismos que mantêm alguém conectado em um site.



Este conteúdo faz parte do Academy Code Christ. 

Um projeto criado para ajudar jovens e iniciantes a aprender programação do zero, de forma simples e gratuita.

Nossa missão é compartilhar conhecimento e incentivar mais pessoas a descobrir que também podem aprender tecnologia, criar projetos e desenvolver novas habilidades.
Todo o conteúdo é disponibilizado gratuitamente, de forma clara, prática e 
sem enrolação. 

Você pode apoiar o projeto se quiser 
com um café. 



Post a Comment

Postagem Anterior Próxima Postagem