Foros del Web » Creando para Internet » HTML »

Fromulario html + validacion js + envio php

Estas en el tema de Fromulario html + validacion js + envio php en el foro de HTML en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 29/10/2012, 15:31
Avatar de wataru77  
Fecha de Ingreso: febrero-2007
Mensajes: 20
Antigüedad: 17 años, 2 meses
Puntos: 1
Pregunta Fromulario html + validacion js + envio php

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&iacute;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.
  #2 (permalink)  
Antiguo 29/10/2012, 19:13
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años
Puntos: 66
Respuesta: Fromulario html + validacion js + envio php

http://php.net/manual/es/function.mail.php

en el to veo que mandas $nombre, ahi debe de haber una direccion de email, hay que respetar las funciones y darles lo que quieren
  #3 (permalink)  
Antiguo 29/10/2012, 20:37
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Fromulario html + validacion js + envio php

Te voy a desilusionar. Solo con html no se puede, el javascript es opcional.
Y por la forma en que plantéas las preguntas, mi mejor sugerencia es que leas algún tutorial de como enviar emails con php, hay decenas

Sin ir más lejos en las wiki del foros tenés esto

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #4 (permalink)  
Antiguo 30/10/2012, 07:29
Avatar de wataru77  
Fecha de Ingreso: febrero-2007
Mensajes: 20
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Fromulario html + validacion js + envio php

Cita:
Iniciado por juanito1712 Ver Mensaje
[url]http://php.net/manual/es/function.mail.php[/url]

en el to veo que mandas $nombre, ahi debe de haber una direccion de email, hay que respetar las funciones y darles lo que quieren
Muchas gracias ;)
  #5 (permalink)  
Antiguo 30/10/2012, 07:30
Avatar de wataru77  
Fecha de Ingreso: febrero-2007
Mensajes: 20
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Fromulario html + validacion js + envio php

Cita:
Iniciado por emprear Ver Mensaje
Te voy a desilusionar. Solo con html no se puede, el javascript es opcional.
Y por la forma en que plantéas las preguntas, mi mejor sugerencia es que leas algún tutorial de como [URL="http://www.google.com/search?hl=es&q=enviar+email+con+php&lr="]enviar emails con php[/URL], hay decenas

Sin ir más lejos en las wiki del foros tenés [URL="http://www.forosdelweb.com/wiki/PHP:%C2%BFC%C3%B3mo_env%C3%ADo_un_email_en_formato _HTML%3F"]esto[/URL]

SAludos
OK emprear!!

Me voy a poner "las pilas" a ver si aprendo algo ;)
  #6 (permalink)  
Antiguo 30/10/2012, 11:35
Avatar de wataru77  
Fecha de Ingreso: febrero-2007
Mensajes: 20
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Fromulario html + validacion js + envio php

Hola a todos!!

Muchas gracias por vuestra ayuda! ^_^

Ahora funciona todo como quieria, mas adelante voy a darle formato html para que la recepcion sea mas agradable.

Asi he desarroyado de nuevo el envio en PHP:

Código:
<?php
	$destino = "[email protected]";
	$nombre = $_POST["nombre_txt"];
	$apellidos = $_POST["apellidos_txt"];
	$email = $_POST["email_txt"];
	$asunto = $_POST["asunto_txt"];
	$comentarios = $_POST["comentarios_txa"];
	$headers = "MIME-Version: 1.0\r\n";
	$headers .= "Content_type: text/html; charset=iso-8859-1\r\n";
	$headers .= "From: $_POST[email_txt]\r\n";
	$headers .= "Reply-to: $_POST[email_txt]\r\n";
	$cuerpo = "
	Datos del formulario rellenado por:\n
	Nombre: $_POST[nombre_txt]\n
	Apellidos: $_POST[apellidos_txt]\n
	Email: $_POST[email_txt]\n
	Asunto: $_POST[asunto_txt]\n
	Comentarios:\n $_POST[comentarios_txa]\n
	";
	
	if(mail($destino, $asunto, $cuerpo, $headers)){
		$respuesta = "Su mensaje ha sido enviado con exito";
	} else {
		$respuesta = "Ocurrio un error, no se pudo enviar el mensaje. Intentelo de nuevo.";
	}
	header("Location: contacto.php?respuesta=$respuesta");
?>
De nuevo, muchas gracias por vuestra molestia ;)

Saludos!!

Última edición por wataru77; 22/04/2013 a las 06:01

Etiquetas: formulario, javascript, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:21.