Validação de dados em PHP: guia e ferramentas

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 bibliotecas prontas



A validação de dados é um dos aspectos-chave para o funcionamento seguro e estável de qualquer aplicação web em PHP. Seja um formulário de registro, um comentário, upload de arquivo ou requisição de API — todos os dados provenientes do usuário devem ser cuidadosamente verificados antes do processamento. Neste artigo, abordaremos as principais abordagens para validação em PHP: desde funções nativas até poderosas bibliotecas prontas. O material será útil tanto para iniciantes quanto para desenvolvedores experientes que desejam estruturar seus conhecimentos.



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

Dados incorretos ou maliciosos podem levar a:

  • Injeções SQL e ataques XSS;
  • Erros na lógica da aplicação;
  • Perda ou corrupção de dados;
  • Experiência negativa do usuário.

A validação correta resolve esses problemas, garantindo a integridade e segurança do sistema.



Ferramentas nativas de validação em PHP

O PHP oferece vários mecanismos nativos para verificação de dados. Vamos abordar os principais.



1. Funções de verificação de tipos e valores

A maneira mais simples é usar funções como is_numeric(), is_string(), empty(), strlen() e outras. Elas são adequadas para verificações rápidas, mas para cenários complexos não são suficientes.



2. Filtros (Filter Functions)

A partir do PHP 5.2, está disponível um conjunto de funções para filtragem e validação: filter_var() e filter_input(). Elas permitem verificar email, URL, endereços IP, números inteiros e muito mais.

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

$age = 25;if (filter_var($age, FILTER_VALIDATE_INT, ["options" => ["min_range" => 1, "max_range" => 120]])) { echo "Idade válida.";}?>


3. Expressões regulares (PCRE)

Para validação flexível de strings (por exemplo, número de telefone, CEP, senha), é conveniente usar preg_match().

<?php$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.";}?>


Bibliotecas prontas para validação em PHP

Quando o projeto cresce, criar sua própria validação do zero se torna ineficiente. Bibliotecas especializadas vêm em socorro. Vamos abordar as duas mais populares.



Respect\\Validation

Uma das bibliotecas mais convenientes e expressivas. Permite construir cadeias de regras no estilo "fluent interface".



Instalação:

composer require respect/validation


Exemplo de uso:

<?phpuse Respect\\Validation\\Validator as v;

$userData = [ 'name' => 'João', 'email' => 'joao@example.com', 'age' => 30, 'password' => 'qwerty123'];

$validator = v::key('name', v::stringType()->length(2, 50)) ->key('email', v::email()) ->key('age', v::intType()->between(18, 100)) ->key('password', v::stringType()->length(8, 64));

try { $validator->assert($userData); echo "Todos os dados são válidos!";} catch (\\Respect\\Validation\\Exceptions\\NestedValidationException $e) { print_r($e->getMessages());}?>


A biblioteca suporta dezenas de regras: date(), cpf() (para CPF brasileiro), creditCard(), url() e outras. Além disso, é possível criar regras personalizadas.



Symfony Validator

Um componente poderoso do ecossistema Symfony, que pode ser usado mesmo sem o framework. Baseado em anotações (ou YAML/XML) e suporta cenários complexos, incluindo c

Recommendations