Ejercicio 3 PHP

Curso PHP – Ejercicio 3 (Formulario con contraseña y validación)

🛠️ Ejercicio 3: Formulario con nombre, email y contraseña + validación de contraseña segura

📌 Planteamiento:

Crea un formulario HTML que solicite:

  • Nombre
  • Email
  • Contraseña
En PHP realiza las siguientes validaciones:
  • ✅ El nombre debe tener al menos 3 caracteres.
  • ✅ El email debe tener formato válido.
  • ✅ La contraseña debe tener al menos 8 caracteres, incluir al menos una letra mayúscula, una minúscula y un número.
  • ✅ Limpia los datos para evitar ataques XSS.
  • ✅ Muestra mensajes de error específicos o un mensaje de éxito con el nombre y email.
👉 Todo en un solo archivo PHP.

✅ Modelo de solución:

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

  if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // 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);
    }

    // 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);
    }

    // Contraseña
    $password = $_POST["password"];
    if (empty($password)) {
      $errores[] = "La contraseña es obligatoria.";
    } elseif (strlen($password) < 8) {
      $errores[] = "La contraseña debe tener al menos 8 caracteres.";
    } elseif (!preg_match('/[A-Z]/', $password)) {
      $errores[] = "La contraseña debe incluir al menos una letra mayúscula.";
    } elseif (!preg_match('/[a-z]/', $password)) {
      $errores[] = "La contraseña debe incluir al menos una letra minúscula.";
    } elseif (!preg_match('/[0-9]/', $password)) {
      $errores[] = "La contraseña debe incluir al menos un número.";
    }

    // Resultado
    if (empty($errores)) {
      $mensaje = "¡Bienvenido, $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 />

  <label for="password">Contraseña:</label>
  <input type="password" id="password" name="password" 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 expresiones regulares (preg_match).
  • 📍 Manejo de múltiples errores.
  • 📍 Sanitización de entrada para evitar XSS.
  • 📍 Retener valores para nombre y email después del envío.

No hay comentarios:

Publicar un comentario

Políticas de Privacidad