Tambien el action lo podriamoa hacer de esta forma, para enviar los datos a la misma pagina.
action="<?php echo $_SERVER[‘PHP_SELF’];
De esta forma obtenemos la ruta exacta de la pagina.
Introducción
¿Cómo se renderiza una página web en mi computadora?
Levantando un servidor local
¿Cómo combinar HTML con PHP?
PHP como preprocesador de HTML
Imprime texto y etiquetas HTML
Condicionales
Ciclos
¿Cómo pasar variables de PHP a JavaScript?
Evita el código espagueti
Refactorizando código espagueti
Manejo de formularios
Cómo obtener una solicitud al servidor con PHP
Envío de un formulario a través de GET
Envío de un formulario a través de POST
Envío de imágenes
Guardando imágenes en el servidor
Tipos de inputs
Otros tipos de inputs
Valida si un formulario ha sido enviado
Sanitizando datos de mi formulario
Validando datos
Proyecto: formulario de contacto
Creando el maquetado
Haciendo la lógica de recepción del formulario
Integrando PHPMailer
Implementando el servidor de correos de Gmail
Conclusión
Es tu turno de poner todo en práctica
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
Aportes 2
Preguntas 2
Tambien el action lo podriamoa hacer de esta forma, para enviar los datos a la misma pagina.
action="<?php echo $_SERVER[‘PHP_SELF’];
De esta forma obtenemos la ruta exacta de la pagina.
También es de importancia evitar los ataques XSS.
Básicamente un usuario podria llenar en cualquier campo del formulario un script malicioso de JavaScript y obtener acceso o información de la página web.
Hay varias formas de evitar esta vulnerabilidad, en el ejemplo de la clase he usuado htmlspecialchars() y strip_tags() para evitar las etiquetas <>
<?php
function validate($name, $email, $subject, $message, $form) {
return !empty(trim($name)) && !empty(trim($email)) && !empty(trim($subject)) && !empty(trim($message));
}
$status = "";
if ( isset($_POST["form"]) ) {
if ( validate(...$_POST) ) {
$name = strip_tags($_POST["name"]);
$email = strip_tags($_POST["email"]);
$subject = strip_tags($_POST["subject"]);
$message = strip_tags($_POST["message"]);
// Mandar el correo
$status = "success";
}
else {
$status = "danger";
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>Formulario de contacto</title>
</head>
<body>
<?php if($status == "danger"): ?>
<div class="alert danger">
<span>Surgió un problema</span>
</div>
<?php endif; ?>
<?php if($status == "success"): ?>
<div class="alert success">
<span>¡Mensaje enviado con éxito!</span>
</div>
<?php endif; ?>
<!-- <form action="./" method="POST"> -->
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST">
<h1>¡Contáctanos!</h1>
<div class="input-group">
<label for="name">Nombre:</label>
<input type="text" name="name" id="name">
</div>
<div class="input-group">
<label for="email">Correo:</label>
<input type="email" name="email" id="email">
</div>
<div class="input-group">
<label for="subject">Asunto:</label>
<input type="text" name="subject" id="subject">
</div>
<div class="input-group">
<label for="message">Mensaje:</label>
<textarea name="message" id="message"></textarea>
</div>
<div class="button-container">
<button name="form" type="submit">Enviar</button>
</div>
<div class="contact-info">
<div class="info">
<span><i class="fas fa-map-marker-alt"></i> 13 Saw Mill Circle, North Olmested.</span>
</div>
<div class="info">
<span><i class="fas fa-phone"></i> +1 123 456 7890</span>
</div>
</div>
</form>
<script src="https://kit.fontawesome.com/bbff992efd.js" crossorigin="anonymous"></script>
</body>
</html>
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.