🛠️ 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.
✅ 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