Formulário no PHP

Capa Curso PHP
Tempo de leitura: 4 minutos

Formulário no PHP: Os formulários são a principal interface de interação do usuário com uma aplicação web, permitindo a coleta de dados que serão processados pelo servidor. No PHP, o processamento de formulários envolve receber os dados enviados via HTML e tratá-los no lado do servidor com segurança e validação.

1. 🏗️ Estrutura Básica do Formulário HTML

Um formulário é definido pela tag <form> e requer dois atributos cruciais para a comunicação HTTP:

AtributoFunção
actionDefine o URL ou arquivo PHP que receberá e processará os dados.
methodEspecifica o método HTTP (GET ou POST) usado para enviar os dados.

Exemplo HTML

HTML

<form action="processa_formulario.php" method="post">
    <label for="nome">Nome:</label>
    <input type="text" id="nome" name="nome" required>
    
    <label for="email">Email:</label>
    <input type="email" id="email" name="email" required>
    
    <button type="submit">Enviar Dados</button>
</form>

2. ↕️ Enviando e Recebendo Dados: GET vs. POST

O PHP usa as superglobais $_GET e $_POST para acessar os dados enviados do formulário, dependendo do método HTTP utilizado.

Método$_GET$_POST
Como EnviaDados anexados à URL (Query String).Dados enviados no corpo da requisição HTTP.
VisibilidadeAlta (visível no histórico e logs do servidor).Baixa (não visível na URL).
Limite de DadosBaixo (limitado pelo tamanho máximo da URL).Alto (pode enviar grandes volumes, ex: uploads de arquivo).
Uso IdealBusca, filtros ou links compartilháveis.Login, cadastro e dados confidenciais.

Recebendo Dados no PHP

Se o formulário usar method="post", os dados são acessados via $_POST:

PHP

// processa.php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $nome = $_POST['nome'];
    $email = $_POST['email'];
    
    echo "Nome recebido: " . $nome;
    echo "Email recebido: " . $email;
}
a

3. 🛡️ Validação e Segurança de Dados

A segurança começa no servidor. Nunca confie nos dados recebidos do cliente. O tratamento seguro envolve três etapas principais:

A. Validação (Garantindo a Integridade)

Verificar se os dados são válidos (preenchidos, no formato correto, etc.).

PHP

<?php
// Exemplo de validação simples
if (empty($_POST['nome']) || empty($_POST['email'])) {
    die("Erro: Por favor, preencha todos os campos.");
}

// 1. Validação de formato de Email
$email_input = $_POST['email'];
if (!filter_var($email_input, FILTER_VALIDATE_EMAIL)) {
    die("Erro: Email inválido.");
}

// 2. Validação para garantir que é um número (e convertendo o tipo)
$idade_input = filter_var($_POST['idade'], FILTER_SANITIZE_NUMBER_INT);
if (!is_numeric($idade_input) || $idade_input < 18) {
    die("Erro: Idade inválida.");
}
?>

B. Sanitização (Prevenção de XSS)

Sanitização (ou Escaping) protege contra ataques XSS (Cross-Site Scripting). Qualquer dado de usuário que será renderizado de volta em uma página HTML deve ter caracteres especiais (como <, >) convertidos para suas entidades HTML.

  • Função: htmlspecialchars()

PHP

<?php
// Exemplo de proteção contra XSS (Escaping de saída)
$nome_seguro = htmlspecialchars($_POST['nome'], ENT_QUOTES, 'UTF-8');
echo "Obrigado, " . $nome_seguro; // Renderiza 'John <script>' como 'John &lt;script&gt;'
?>

C. Proteção contra CSRF

Para prevenir CSRF (Cross-Site Request Forgery), utilize Tokens CSRF. O token é uma string secreta gerada na sessão do usuário e incluída como um campo oculto no formulário.

  1. Geração: Gere o token e armazene-o na sessão ($_SESSION).
  2. Inclusão: Coloque-o em um campo oculto no HTML.
  3. Verificação: Ao processar o formulário, compare o token recebido via $_POST com o token na $_SESSION. Se não coincidirem, a requisição é inválida.

4. 🗃️ Processamento de Dados (Exemplo PDO)

Após a validação e sanitização, o processamento pode envolver armazenamento de dados em um banco. O uso de Prepared Statements é fundamental para prevenir Injeção SQL.

PHP

<?php
// Assume que $nome e $email foram validados.

// Conexão e configuração PDO
$pdo = new PDO('mysql:host=localhost;dbname=meu_banco', 'usuario', 'senha');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

// Utilizando Prepared Statements (proteção contra Injeção SQL)
$stmt = $pdo->prepare("
  INSERT INTO usuarios (nome, email) 
  VALUES (:nome, :email)
");

// Bind dos parâmetros (os dados são enviados separadamente do comando SQL)
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':email', $email);
$stmt->execute();

echo "Cadastro realizado com sucesso!";

// Redirecionamento após sucesso (Melhor Prática PRG: Post-Redirect-Get)
header('Location: obrigado.php');
exit;
?>

5. 📧 Outras Ações Comuns

  • Envio de E-mail: A função nativa mail() pode ser usada para enviar notificações. Para aplicações profissionais, use uma biblioteca como PHPMailer para lidar com autenticação SMTP e erros.
  • Redirecionamento: O uso de header('Location: url') seguido de exit; é a forma padrão de enviar o usuário para outra página.

✅ Conclusão Formulário no PHP

Formulário no PHP: Formulários são a porta de entrada de dados para sua aplicação, e seu processamento seguro é uma prioridade. Ao utilizar o método POST para dados sensíveis, validar as entradas rigorosamente, sanitizar a saída com htmlspecialchars() para prevenir XSS e empregar Prepared Statements (PDO/MySQLi) para evitar Injeção SQL, você constrói formulários robustos, funcionais e seguros.

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:

SQL
SQL
Capa Curso PHP
PHP
Laravel
Laravel

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:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi
Com mais de 20 anos de jornada na tecnologia, minha trajetória evoluiu do ensino técnico à arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de soluções de Inteligência Artificial nativa e análise de dados públicos, utilizando o ecossistema PHP para transformar dados brutos em transparência e eficiência. Como autor e desenvolvedor, acredito na democratização do conhecimento. Essa visão resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura até os bastidores da indústria de Jogos e IA. No universo de Game Design, sou autor do livro "GDD – O Guia Definitivo" e documento ativamente meus processos através de DevLogs, unindo rigor técnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso é conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.