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:
| Atributo | Função |
action | Define o URL ou arquivo PHP que receberá e processará os dados. |
method | Especifica 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 Envia | Dados anexados à URL (Query String). | Dados enviados no corpo da requisição HTTP. |
| Visibilidade | Alta (visível no histórico e logs do servidor). | Baixa (não visível na URL). |
| Limite de Dados | Baixo (limitado pelo tamanho máximo da URL). | Alto (pode enviar grandes volumes, ex: uploads de arquivo). |
| Uso Ideal | Busca, 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 <script>'
?>
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.
- Geração: Gere o token e armazene-o na sessão (
$_SESSION). - Inclusão: Coloque-o em um campo oculto no HTML.
- Verificação: Ao processar o formulário, compare o token recebido via
$_POSTcom 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 deexit;é 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:
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:












