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/validationExemplo 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
Também na biblioteca
Autorização e Autenticação em Swift: guia completo para iOS/macOS
Envio de email em Rust: bibliotecas lettre e mailparse para mensagens
Cliente Elasticsearch para Kotlin: integração, exemplos e recursos
Parsing de HTML em TypeScript: bibliotecas, ferramentas e exemplos de código