Validación de datos en PHP: guía completa con ejemplos de código

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 soluciones profesionales



La validación de datos es una de las piedras angulares de una aplicación web segura y estable. PHP ofrece múltiples herramientas integradas que permiten verificar eficazmente la entrada del usuario. En este artículo, analizaremos los enfoques principales, desde funciones simples hasta potentes bibliotecas, y mostraremos ejemplos prácticos.



¿Por qué es necesaria la validación?

Cualquier aplicación que reciba datos del usuario (formularios, API, parámetros URL) debe verificar su corrección. Esto ayuda a:

  • Prevenir inyecciones SQL y ataques XSS
  • Garantizar la integridad de los datos en la base de datos
  • Mejorar la experiencia del usuario (errores claros)
  • Evitar errores lógicos en el funcionamiento de la aplicación


Funciones integradas de validación en PHP

PHP proporciona varias funciones simples pero efectivas para la verificación básica de datos:



1. Verificación de vacío: empty() y isset()

// Verificar que el campo no esté vacío$name = trim($_POST['name'] ?? '');if (empty($name)) {    echo "El nombre es obligatorio";}

// Verificar existencia de la variableif (!isset($_POST['email'])) { echo "El campo email no fue enviado";}


2. Filtros: filter_var()

Este es, quizás, el mecanismo integrado más conveniente para validar tipos de datos comunes:

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

// Otros filtros útiles:$url = "https://pythonlib.ru";if (filter_var($url, FILTER_VALIDATE_URL)) { echo "La URL es correcta";}

$ip = "192.168.1.1";if (filter_var($ip, FILTER_VALIDATE_IP)) { echo "La dirección IP es correcta";}

// Filtro para números enteros$age = 25;if (filter_var($age, FILTER_VALIDATE_INT, ["options" => ["min_range" => 1, "max_range" => 120]])) { echo "La edad es correcta";}


Expresiones regulares para validación compleja

Cuando los filtros estándar no son suficientes, las expresiones regulares vienen al rescate. La función preg_match() permite verificar datos según cualquier patrón:

// Verificación de teléfono (formato ruso)$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 correcto";} else {    echo "Formato de teléfono inválido";}

// Verificación de contraseña (mínimo 8 caracteres, al menos un dígito y una letra)$password = "MyPass123";$pattern = '/^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,}$/';if (preg_match($pattern, $password)) { echo "La contraseña es segura";} else { echo "La contraseña no cumple con los requisitos";}


Bibliotecas para validación: cuando el proyecto se vuelve más complejo

Para proyectos grandes (frameworks, CMS), la validación manual se vuelve incómoda. Aquí es donde entran las bibliotecas especializadas. Veamos las dos más populares:



1. Symfony Validator

Parte del ecosistema Symfony, pero se puede usar por separado. Permite describir reglas de validación mediante anotaciones o YAML/XML:

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

class User { /** * @Assert\\NotBlank(message="El nombre no puede estar vacío") * @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