Llevo todo el dia con ese problema.
Mis conocimientos en PHP y JS son mínimos tengo muchas dudas.
Es posible hacer solo en HTML5 un formulario para que se envíe el solo, o siempre he de depender de un archivo "enviar.php" o JavaScript?
Si es posible, ¿Alguien sabe algún "tutorial" o una muestra de codigo para luego adecuarlo a mis necesidades?
Pero bueno, vamos a lo que importa:
Codigo formulario HTML:
Código:
Codigo JS (No tengo problemas con el)<form name="formulario_frm" action="enviar.php" method="post" enctype="application/x-www-form-urlencoded"> <fieldset> <?php error_reporting (E_ALL ^ E_NOTICE ^ E_WARNING); if(isset($_GET["respuesta"])) { echo "<span>".$_GET["respuesta"]."</span><br /><br />"; } ?> <legend>Envíanos tus comentarios</legend> <div> <label for="nombre">Nombre:</label> <input type="text" id="nombre" name="nombre_txt" required /> </div> <div> <label for="apellidos">Apellidos:</label> <input type="text" id="apellidos" name="apellidos_txt" required /> </div> <div> <label for="email">Email:</label> <input type="email" id="email" name="email_txt" required /> </div> <div> <label for="asunto">Asunto:</label> <input type="text" id="asunto" name="asunto_txt" required /> </div> <div> <label for="comentarios">Comentarios:</label> <textarea id="comentarios" name="comentarios_txa" cols="31" rows="5" required ></textarea> </div> <div> <input type="button" id="enviar" name="enviar_btn" value="Enviar" /> </div> </fieldset> </form>
Código:
Codigo PHP (El rebelde!!)function validar() { var verificar = true; var expRegEmail = /^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/; if (!document.getElementById("nombre").value) { alert("El campo nombre es requerido"); document.getElementById("nombre").focus(); verificar=false; } else if (!document.getElementById("apellidos").value) { alert("El campo apellidos es requerido"); document.getElementById("apellidos").focus(); verificar=false; } else if (!expRegEmail.exec(document.getElementById("email").value)) { alert("El campo email es requerido"); document.getElementById("email").focus(); verificar=false; } else if (!document.getElementById("asunto").value) { alert("El campo asunto es requerido"); document.getElementById("asunto").focus(); verificar=false; } else if (!document.getElementById("comentarios").value) { alert("El campo comentarios es requerido"); document.getElementById("comentarios").focus(); verificar=false; } if(verificar) { document.formulario_frm.submit(); } } window.onload = function() { document.getElementById("enviar").onclick = validar; }
Código:
Con este ultimo codigo PHP esta devolviendo el error al HTML: ("Ocurrio un error, no se pudo enviar el mensaje. Intentelo de nuevo.")<?php $email_from = "Formulario de contacto Innova Bcn"; $nombre = $_POST["nombre_txt"]; $apellidos = $_POST["apellidos_txt"]; $email = $_POST["email_txt"]; $asunto = $_POST["asunto_txt"]; $comentarios = $_POST["comentarios_txa"]; $headers = 'From: '.$email_from."\r\n".'Reply-To: '.$email."\r\n" .'X-Mailer: PHP/' . phpversion(); if(mail($nombre, $apellidos, $asunto, $comentarios, $headers)){ $respuesta = "Su mensaje ha sido envio"; } else { $respuesta = "Ocurrio un error, no se pudo enviar el mensaje. Intentelo de nuevo."; } header("Location: contacto.php?respuesta=$respuesta"); ?>
No se que puede llegar a ocurrir, quizás sea ( $headers = 'From: '.$email_from."\r\n".'Reply-To: '.$email."\r\n" .'X-Mailer: PHP/' . phpversion(); ) que me da que será eso, pero no se como solucionarlo.
Otra cosa que me intriga es cuando lo envie como se verá dicho mensaje al recibirlo. Me explico:
La idea es que tenga una pequeña estructura.
Detalles del mensage.
Nombre: XXXXXX
Apellidos: XXXXX XXXXXX
Email: XXXXXXXXX
Asunto: XXXXXXX XXXX
Comentarios:
XXXXXXXXXXXXXXX
XXXXXXXX
XXXXXXXXXXXXX
XXXXXX
Muchas gracias por vuestro tiempo.
Espero con ilusión las respuestas XD ^_^
Un saludo.