PHP Validación de formulario - Campos obligatorios

Esta sección muestra cómo crear campos de entrada obligatorios y crear los mensajes de error necesarios.

PHP - Campos de entrada

Desde las reglas de validación de la sección anterior, vemos que los campos "Nombre", "Correo electrónico" y "Género" son obligatorios. Estos campos no pueden estar vacíos y deben completarse en el formulario HTML.

Campo Reglas de validación
Nombre Obligatorio. Debe contener letras y espacios.
Correo electrónico Obligatorio. Debe contener una dirección de correo electrónico válida (que incluya @ y .).
Sitio web Opcional. Si se completa, debe contener una URL válida.
Comentario Opcional. Campo de entrada de múltiples líneas (caja de texto).
Género Obligatorio. Debe seleccionar una opción.

En la sección anterior, todos los campos de entrada eran opcionales.

En el siguiente código, hemos añadido algunas variables nuevas: $nameErr, $emailErr, $genderErr y $websiteErr. Estas variables de error guardarán los mensajes de error de los campos solicitados. Además, hemos añadido una sentencia if else para cada variable $_POST. Esta sentencia verifica si la variable $_POST está vacía (a través de la función PHP empty()). Si está vacía, el mensaje de error se almacenará en diferentes variables de error. Si no está vacío, se enviarán los datos de entrada del usuario a través de la función test_input():

<?php}}
// Definir variables y establecerlos en valores vacíos
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "El nombre es obligatorio";
  } else {
    $name = test_input($_POST["name"]);
  }
  if (empty($_POST["email"])) {
    $emailErr = "El correo electrónico es obligatorio";
  } else {
    $email = test_input($_POST["email"]);
  }
  if (empty($_POST["website"])) {
    $website = "";
  } else {
    $website = test_input($_POST["website"]);
  }
  if (empty($_POST["comment"])) {
    $comment = "";
  } else {
    $comment = test_input($_POST["comment"]);
  }
  if (empty($_POST["gender"])) {
    $genderErr = "El género es obligatorio";
  } else {
    $gender = test_input($_POST["gender"]);
  }
}
?>

PHP - Mostrar mensajes de error

En los formularios HTML, agregamos un poco de script detrás de cada campo solicitado. Si es necesario, se generan mensajes de error adecuados (si el usuario intenta enviar el formulario sin llenar los campos obligatorios):

Ejemplo

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Nombre: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
Correo electrónico:
<input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
Sitio web:
<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
<label>Comentario: <textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
Género:
<input type="radio" name="gender" value="female">Mujer
<input type="radio" name="gender" value="male">Hombre
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Enviar"> 
</form>

Ejemplo de ejecución

A continuación, se verifica los datos de entrada, es decir, ¿'¿El campo Nombre contiene solo letras y espacios?' y ¿'¿El campo E-mail contiene una sintaxis de dirección de correo electrónico válida?' Además, si se ha rellenado el campo Sitio web, ¿'¿Este campo contiene una URL válida?'