No me funciono el Unpacking array pero pase los argumentos manualmente y ya esta funcionando correctamente 😃
Les comparto mi código realizado.
.
Recepción PHP
<?php
// Creando la lógica en el mismo archivo, aunque perfectamente puede estar en otro archivo separado
// Status: Permite guardar un estado para más adelante mostrar una alerta si el correo es enviado o no
$status = "";
// Comprobamos si el formulario no se envío vacío
function validateForm($name, $email, $subject, $message){
return !empty(trim($name)) && !empty(trim($email)) && !empty(trim($subject)) && !empty(trim($message));
}
// Comprobamos si el formulario fue enviado
if(isset($_POST['form'])){
// Invocamos función para validar y con el unpacking array le pasamos los parametros solicitados a la función
if(validateForm($_POST['name'], $_POST['email'], $_POST['subject'], $_POST['message'])){
// Sanitizando los datos
$name = htmlentities($_POST['name']);
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
$subject = htmlentities($_POST['subject']);
$message = htmlentities($_POST['message']);
$status = "success";
}else{
$status = "error";
}
}
?>
Index
<!DOCTYPE html>
<html lang="es">
<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="shortcut icon" href="./assets/img/contacto.png" type="image/x-icon">
<link rel="stylesheet" href="./css/styles.css">
<title>iJCode - Formulario de Contacto</title>
</head>
<body>
<!-- Mensaje de error -->
<?php if($status === 'error'):?>
<div class="message">
<div class="container">
<div class="message-error">
<p class="message-paragraph">Surgió un problema</p>
</div>
</div>
</div>
<?php endif;?>
<!-- Mensaje de éxito -->
<?php if($status === 'success'): ?>
<div class="message">
<div class="container">
<div class="message-success">
<p class="message-paragraph">¡Mensaje enviado con éxito!</p>
</div>
</div>
</div>
<?php endif; ?>
<!-- Creación de la estructura del Formulario -->
<div class="form-container">
<div class="container">
<form action="./index.php" class="form" method="post">
<div class="form-header">
<h2 class="form-title">¡Contactanos ✨!</h2>
</div>
<div class="form-body">
<label class="form-label" for="name">Nombre: </label>
<input class="form-input" type="text" required name="name" id="name" placeholder="Julieta Ortiz Sanchez">
<label class="form-label" for="email">Correo: </label>
<input class="form-input" type="text" required name="email" id="email" placeholder="[email protected]">
<label class="form-label" for="subject">Asunto: </label>
<input class="form-input" type="text" required name="subject" id="subject" placeholder="Solicitud de documentación final">
<label class="form-label" for="message">Mensaje: </label>
<textarea class="form-area" name="message" id="message" placeholder="Me urge obtener la documentación del proyecto de la papelería debido a que ya estoy en fecha límite para entregarlos al área correspondiente"></textarea>
<button class="form-cta" name="form">Enviar</button>
</div>
</form>
<div class="form-footer">
<p class="form-paragraph"><i class="fa-solid fa-location-dot"></i> 13 Saw Mill Circle, North Olmested.</p>
<p class="form-paragraph"><i class="fa-solid fa-phone"></i> +1 123 456 7890</p>
</div>
</div>
</div>
<script src="https://kit.fontawesome.com/36b3528883.js" crossorigin="anonymous"></script>
</body>
</html>
CSS
@import url('https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap');
:root{
--mainColor: #1B2430;
--white: #F9F2ED;
--mainFont: 'Lato', sans-serif;
--cardBackground: #816797;
--cta: #371B58;
--red: #F87474;
--green: #9EB23B;
}
body{
margin: 0;
block-size: 100%;
min-block-size: 100vh;
font-family: var(--mainFont);
background-color: var(--mainColor);
padding: 2rem 0;
}
.form-container{
color: #F9F2ED;
border-block-start: .1px solid transparent;
}
.form{
box-shadow: rgba(255, 255, 255, 0.1) 0px 4px 16px, rgba(17, 17, 26, 0.05) 0px 8px 32px;
}
.container{
inline-size: 90%;
max-inline-size: 43.75rem;
margin: 0 auto;
border-radius: .5rem;
box-sizing: border-box;
overflow: hidden;
}
.form{
background-color: var(--cardBackground);
padding: 2rem 1.5rem;
position: relative;
}
.form::before{
content: '';
position: absolute;
background-color: var(--white);
block-size: 1rem;
inset-inline-start: 0;
inset-inline-end: 0;
inset-block-start: 0;
}
.form-header{
margin-block-end: 2rem;
}
.form-title{
margin: 0;
text-align: center;
font-size: 2.2rem;
}
.form-body{
display: flex;
flex-direction: column;
}
.form-label{
font-weight: 700;
margin-block-end: .25rem;
}
.form-input,
.form-area{
font-family: var(--mainFont);
margin-block-end: 2rem;
padding: .625rem;
border-radius: .25rem;
border: none;
outline: none;
font-size: 1rem;
}
.form-area{
inline-size: auto;
block-size: 6rem;
resize: none;
}
.form-cta{
background-color: var(--cta);
border: none;
color: var(--white);
padding: 1rem 0;
border-radius: .25rem;
font-weight: 700;
transition: transform .2s;
border: none;
text-transform: uppercase;
}
.form-cta:active{
transform: scale(.9);
}
.form-cta:hover{
--cta: #371b58a3;
}
.form-footer{
border-block-start: 0.1px solid transparent;
background-color: var(--white);
color: var(--mainColor);
display: flex;
flex-direction: column;
gap: 1rem;
padding: 2rem;
}
.form-paragraph{
margin: 0;
font-weight: 700;
}
.fa-solid{
color: var(--cardBackground);
}
.message-error,
.message-success{
padding: 2rem;
color: var(--white);
font-size: 1.2rem;
text-align: center;
margin: 1rem 0;
border-radius: .25rem;
}
.message-error{
background-color: var(--red);
}
.message-success{
background-color: var(--green);
}
.message-paragraph{
margin: 0;
}
@media screen and (min-width: 768px){
.form-title{
font-size: 3rem;
}
.form-cta{
font-size: 1rem;
}
.form-footer{
flex-direction: row;
justify-content: space-between;
}
.form-paragraph{
font-size: 1.2rem;
}
}
Resultado
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?