Hola a todos de nuevo ;)
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:
<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>
Codigo JS (No tengo problemas con el)
Código:
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;
}
Codigo PHP (El rebelde!!)
Código:
<?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");
?>
Con este ultimo codigo PHP esta devolviendo el error al HTML: ("Ocurrio un error, no se pudo enviar el mensaje. Intentelo de nuevo.")
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.