Validación de datos en PHP: guía y herramientas

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Validación de datos en PHP: desde comprobaciones simples hasta bibliotecas listas para usar



La validación de datos es uno de los aspectos clave para el funcionamiento seguro y estable de cualquier aplicación web en PHP. Ya sea un formulario de registro, un comentario, la carga de un archivo o una solicitud API, todos los datos provenientes del usuario deben ser verificados minuciosamente antes de procesarlos. En este artículo, analizaremos los enfoques principales para la validación en PHP: desde funciones integradas hasta potentes bibliotecas listas para usar. El material será útil tanto para principiantes como para desarrolladores experimentados que deseen estructurar sus conocimientos.



¿Por qué es necesaria la validación?

Los datos incorrectos o maliciosos pueden provocar:

  • Inyecciones SQL y ataques XSS;
  • errores en la lógica de la aplicación;
  • pérdida o corrupción de datos;
  • una experiencia de usuario negativa.

Una validación adecuada resuelve estos problemas, garantizando la integridad y seguridad del sistema.



Herramientas de validación integradas en PHP

PHP proporciona varios mecanismos integrados para verificar datos. Veamos los principales.



1. Funciones de verificación de tipos y valores

La forma más simple es usar funciones como is_numeric(), is_string(), empty(), strlen() y otras. Son adecuadas para comprobaciones rápidas, pero no son suficientes para escenarios complejos.



2. Filtros (Filter Functions)

A partir de PHP 5.2, está disponible un conjunto de funciones para filtrar y validar: filter_var() y filter_input(). Permiten verificar correos electrónicos, URL, direcciones IP, números enteros y mucho más.

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

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


3. Expresiones regulares (PCRE)

Para la validación flexible de cadenas (por ejemplo, número de teléfono, código postal, contraseña) es 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 "El teléfono es válido.";} else {    echo "Formato de teléfono incorrecto.";}?>


Bibliotecas listas para usar para validación en PHP

Cuando el proyecto crece, escribir su propia validación desde cero se vuelve ineficiente. Aquí es donde las bibliotecas especializadas vienen al rescate. Veamos las dos más populares.



Respect\\Validation

Una de las bibliotecas más convenientes y expresivas. Permite construir cadenas de reglas en estilo "fluent interface".



Instalación:

composer require respect/validation


Ejemplo de uso:

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

$userData = [ 'name' => 'Iván', 'email' => 'ivan@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 los datos son válidos!";} catch (\\Respect\\Validation\\Exceptions\\NestedValidationException $e) { print_r($e->getMessages());}?>


La biblioteca admite decenas de reglas: date(), cpf() (para el CPF brasileño), creditCard(), url() y otras. Además, se pueden crear reglas personalizadas.



Symfony Validator

Un potente componente del ecosistema Symfony que se puede usar incluso sin el framework. Está basado en anotaciones (o YAML/XML) y admite escenarios complejos, incluyendo c

Recommendations