Título: Problema con Formulario
Publicado por: Mechamon en 27 Septiembre 2017, 17:22 pm
Hola, un amigo tiene un problema usa un formulario y cuando le da enviar si nombre y apellido no tiene ñ o tilde, se envía sin problema, pero si tiene alguno de esos 2 casos da el error siguiente como se podría corregir. Gracias
Lo sentimos mucho, pero hubo errores encontrados con el formulario que enviaste. Estos errores aparecen a continuación.
El nombre que ingresó no parece ser válido. El Apellido que ingresó no parece ser válido.
Vuelva por favor y solucione estos errores.
Título: Re: Problema con Formulario
Publicado por: #!drvy en 27 Septiembre 2017, 17:30 pm
Sin el código, no se puede ayudar.
No somos magos, ni adivinos, ni leemos tarot.
Saludos
Título: Re: Problema con Formulario
Publicado por: Mechamon en 27 Septiembre 2017, 17:47 pm
<?php if(isset($_POST['email'])) { // EDIT THE 2 LINES BELOW AS REQUIRED $email_to = "info@dominio.com"; $email_subject = "Formulario de contacto"; function died($error) { // your error code can go here echo "Lo sentimos mucho, pero hubo errores encontrados con el formulario que enviaste. "; echo "Estos errores aparecen a continuación.<br /><br />"; echo $error."<br /><br />"; echo "Vuelva por favor y solucione estos errores.<br /><br />"; } // validation expected data exists if(!isset($_POST['first_name']) || !isset($_POST['last_name']) || !isset($_POST['email']) || !isset($_POST['telephone']) || !isset($_POST['comments'])) { died('Lo sentimos, pero parece haber un problema con el formulario que envió.'); } $first_name = $_POST['first_name']; // required $last_name = $_POST['last_name']; // required $email_from = $_POST['email']; // required $telephone = $_POST['telephone']; // not required $comments = $_POST['comments']; // required $error_message = ""; $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; $error_message .= 'La dirección de correo electrónico que introdujo no parece válida.<br />'; } $string_exp = "/^[A-Za-z .'-]+$/"; $error_message .= 'El nombre que ingresó no parece ser válido.<br />'; } $error_message .= 'El Apellido que ingresó no parece ser válido.<br />'; } $error_message .= 'El Mensaje que ingresó no parece ser válido.<br />'; } if(strlen($error_message) > 0) { died($error_message); } $email_message = "Form details below.\n\n"; function clean_string($string) { $bad = array("content-type","bcc:","to:","cc:","href"); } $email_message .= "Nombre: ".clean_string($first_name)."\n"; $email_message .= "Apellido: ".clean_string($last_name)."\n"; $email_message .= "Correo electrónico: ".clean_string($email_from)."\n"; $email_message .= "Teléfono: ".clean_string($telephone)."\n"; $email_message .= "Mensaje: ".clean_string($comments)."\n"; // create email headers $headers = 'From: '.$email_from."\r\n". 'Reply-To: '.$email_from."\r\n" . @mail($email_to, $email_subject, $email_message, $headers); ?> <!-- include your own success html here --> Gracias por contactarnos. Estaremos en contacto con usted muy pronto. <?php } ?>
<form name="contactform" method="post" action="send_form_email.php"> <input type="text" name="first_name" maxlength="50" size="30"> <input type="text" name="last_name" maxlength="50" size="30"> <input type="text" name="email" maxlength="80" size="30"> <input type="text" name="telephone" maxlength="30" size="30"> <td colspan="2" style="text-align:center"> <input type="submit" value="Enviar">
Título: Re: Problema con Formulario
Publicado por: #!drvy en 27 Septiembre 2017, 18:47 pm
El error lo tienes en la linea 42 del PHP. Se hace una comprobación de los strings pero no admite acentos ni ñ ni ningún caracter que no sea (A-Za-z .'-) es decir, espacio, punto, comilla simple, guion, y las letras del tipo US-ASCII. En un principio, activando el unicode y buscando palabras utf8 deberia funcionar: $string_exp = "/^[\p{L} .'-]+$/u";
También puedes añadir manualmente los caracteres que buscas: $string_exp = "/^[A-Za-zñÑçÇáéóíúÁÉÓÍÚ .'-]+$/";
Saludos
Título: Re: Problema con Formulario
Publicado por: Mechamon en 27 Septiembre 2017, 19:36 pm
Gracias entonces cambio la linea 42 $string_exp = "/^[A-Za-z .'-]+$/"; por esta otra linea
$string_exp = "/^[A-Za-zñÑçÇáéóíúÁÉÓÍÚ .'-]+$/";
y el html tiene el <meta charset="utf-8">
Mod: No hacer doble post.
|