Ejercicio 2 PHP

Curso PHP – Ejercicio 2 (Formulario con validación y limpieza de datos)

🛠️ Ejercicio 2: Formulario con nombre y email, validación y limpieza de datos

📌 Planteamiento:

Crea un formulario HTML que solicite nombre y email.
En PHP realiza las siguientes validaciones y acciones:

  • ✅ El nombre debe tener al menos 3 caracteres.
  • ✅ El email debe tener un formato válido.
  • ✅ Limpia los datos para evitar ataques XSS usando htmlspecialchars.
  • ✅ Muestra un mensaje con los datos validados o los errores.
👉 Todo en un solo archivo PHP.

✅ Modelo de solución:

<?php
  $mensaje = "";
  $nombre = $email = "";
  $errores = [];

  if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Limpieza y validación nombre
    $nombre = trim($_POST["nombre"]);
    if (empty($nombre)) {
      $errores[] = "El nombre es obligatorio.";
    } elseif (strlen($nombre) < 3) {
      $errores[] = "El nombre debe tener al menos 3 caracteres.";
    } else {
      $nombre = htmlspecialchars($nombre);
    }

    // Limpieza y validación email
    $email = trim($_POST["email"]);
    if (empty($email)) {
      $errores[] = "El email es obligatorio.";
    } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $errores[] = "El formato del email no es válido.";
    } else {
      $email = htmlspecialchars($email);
    }

    // Resultado
    if (empty($errores)) {
      $mensaje = "¡Hola, $nombre! Tu email es $email.";
    } else {
      $mensaje = "Errores: " . implode(" | ", $errores);
    }
  }
?>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
  <label for="nombre">Nombre:</label>
  <input type="text" id="nombre" name="nombre" value="<?php echo $nombre; ?>" required />

  <label for="email">Email:</label>
  <input type="email" id="email" name="email" value="<?php echo $email; ?>" required />

  <button type="submit">Enviar</button>
</form>

<?php if (!empty($mensaje)) : ?>
  <p><?php echo $mensaje; ?></p>
<?php endif; ?>
    

🎯 Claves de este ejercicio:

  • 📍 Validación avanzada con filter_var().
  • 📍 Limpieza de datos para seguridad con htmlspecialchars().
  • 📍 Mostrar múltiples errores concatenados.
  • 📍 Retener valores en los campos del formulario tras envío.

No hay comentarios:

Publicar un comentario

Políticas de Privacidad