Validação de dados em PHP: guia completo com exemplos de código

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Validação de dados em PHP: de verificações simples a soluções profissionais



A validação de dados é um dos pilares fundamentais de uma aplicação web segura e estável. O PHP oferece diversas ferramentas integradas que permitem verificar eficientemente a entrada do usuário. Neste artigo, abordaremos as principais abordagens, desde funções simples até bibliotecas poderosas, e mostraremos exemplos práticos.



Por que a validação é necessária?

Qualquer aplicação que receba dados do usuário (formulários, APIs, parâmetros de URL) deve verificar sua correção. Isso ajuda a:

  • Prevenir injeções SQL e ataques XSS
  • Garantir a integridade dos dados no banco
  • Melhorar a experiência do usuário (erros compreensíveis)
  • Evitar erros lógicos no funcionamento da aplicação


Funções de validação integradas do PHP

O PHP fornece várias funções simples, mas eficazes, para verificação básica de dados:



1. Verificação de vazio: empty() e isset()

// Verificar se o campo não está vazio$name = trim($_POST['name'] ?? '');if (empty($name)) {    echo "O nome é obrigatório";}

// Verificar existência da variávelif (!isset($_POST['email'])) { echo "O campo email não foi enviado";}


2. Filtros: filter_var()

Este é, talvez, o mecanismo integrado mais conveniente para validar tipos de dados comuns:

$email = "user@example.com";if (filter_var($email, FILTER_VALIDATE_EMAIL)) {    echo "Email válido";} else {    echo "Formato de email inválido";}

// Outros filtros úteis:$url = "https://pythonlib.ru";if (filter_var($url, FILTER_VALIDATE_URL)) { echo "URL válida";}

$ip = "192.168.1.1";if (filter_var($ip, FILTER_VALIDATE_IP)) { echo "Endereço IP válido";}

// Filtro para números inteiros$age = 25;if (filter_var($age, FILTER_VALIDATE_INT, ["options" => ["min_range" => 1, "max_range" => 120]])) { echo "Idade válida";}


Expressões regulares para validação complexa

Quando os filtros padrão não são suficientes, as expressões regulares vêm em socorro. A função preg_match() permite verificar dados de acordo com qualquer padrão:

// Verificação de telefone (formato russo)$phone = "+7 (999) 123-45-67";$pattern = '/^\\+7\\s?\\(\\d{3}\\)\\s?\\d{3}-\\d{2}-\\d{2}$/';if (preg_match($pattern, $phone)) {    echo "Telefone válido";} else {    echo "Formato de telefone inválido";}

// Verificação de senha (mínimo 8 caracteres, pelo menos um dígito e uma letra)$password = "MyPass123";$pattern = '/^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,}$/';if (preg_match($pattern, $password)) { echo "Senha segura";} else { echo "Senha não atende aos requisitos";}


Bibliotecas de validação: quando o projeto se torna mais complexo

Para projetos grandes (frameworks, CMS), a validação manual torna-se inconveniente. Bibliotecas especializadas vêm em auxílio. Vamos considerar as duas mais populares:



1. Symfony Validator

Parte do ecossistema Symfony, mas pode ser usado separadamente. Permite descrever regras de validação através de anotações ou YAML/XML:

use Symfony\\Component\\Validator\\Validation;use Symfony\\Component\\Validator\\Constraints as Assert;

class User { /** * @Assert\\NotBlank(message="O nome não pode estar vazio") * @Assert\\Length(min=2, max=50) */ public $name; /** * @Assert\\Email(message="Formato de email inválido") */ public $email;}

// Uso$validator = Validation::createValidatorBuilder() ->enableAnnotationMapping() ->getValidator();

$user = new User();$user->name = "A";$user->email = "invalid-email";

$errors = $validator->validate($user);if (count($errors) > 0) { foreach ($errors as $error) { echo $error->getMessage() . "<br>"; }}

Recommendations