PHP Validación de Formulario - Validación de Correo Electrónico y URL

Esta sección muestra cómo validar nombre, correo electrónico y URL.

PHP - Validación de Nombre

El siguiente código muestra un método simple para verificar si el campo nombre contiene letras y espacios. Si el campo nombre no es válido, se almacena un mensaje de error:

$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
  $nameErr = "¡Sólo se permiten letras y espacios!"; 
}

Notas:La función preg_match() busca patrones en una cadena, y devuelve true si el patrón existe, de lo contrario devuelve false.

PHP - Validación de Correo Electrónico

El siguiente código muestra un método simple para verificar si la dirección de correo electrónico tiene una sintaxis válida. Si no es válida, se almacena un mensaje de error:

$email = test_input($_POST["email"]);
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
  $emailErr = "Formato de correo electrónico no válido"; 
}

PHP - Validación de URL

El siguiente código muestra el método para verificar si la sintaxis de la dirección URL es válida (esta expresión regular permite también la barra oblicua en la URL). Si la sintaxis de la dirección URL no es válida, se almacena un mensaje de error:

$website = test_input($_POST["website"]);
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%",
=~_|]/i,$website)) {
  $websiteErr = "URL no válida"; 
}

PHP - Validación de Nombre, Correo Electrónico y URL

Ahora, el script es así:

Ejemplo

<?php
// Definición de variables y establecimiento de valores en blanco
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "El nombre es obligatorio";
  }
    $name = test_input($_POST["name"]);
    // Verificación de si el nombre contiene letras y espacios
    if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
      $nameErr = "Sólo se permiten letras y espacios en blanco"; 
    }
  }
  if (empty($_POST["email"])) {
    $emailErr = "El correo electrónico es obligatorio";
  }
    $email = test_input($_POST["email"]);
    // Verificación de la sintaxis de la dirección de correo electrónico
    if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
      $emailErr = "Invalid email format"; 
    }
  }
  if (empty($_POST["website"])) {
    $website = "";
  }
    $website = test_input($_POST["website"]);
    // Verificar si la dirección URL del idioma es válida (esta expresión regular también permite guiones bajos en la URL)
    if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%",
    =~_|]/i,$website)) {
      $websiteErr = "Invalid URL"; 
    }
  }
  if (empty($_POST["comment"])) {
    $comment = "";
  }
    $comment = test_input($_POST["comment"]);
  }
  if (empty($_POST["gender"])) {
    $genderErr = "Gender is required";
  }
    $gender = test_input($_POST["gender"]);
  }
}
?>

Ejemplo de ejecución

A continuación, le explicaremos cómo evitar que el formulario vacíe todos los campos de entrada después de que el usuario envíe el formulario.