Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema al ejecutar formulario de contacto

Estas en el tema de Problema al ejecutar formulario de contacto en el foro de PHP en Foros del Web. Hola buenas, espero que puedan ayudarme con este tema: Dispongo un formulario de contacto que aunque esté basado en php el código que no estoy ...
  #1 (permalink)  
Antiguo 18/05/2016, 06:01
 
Fecha de Ingreso: julio-2010
Mensajes: 37
Antigüedad: 13 años, 9 meses
Puntos: 1
Pregunta Problema al ejecutar formulario de contacto

Hola buenas,
espero que puedan ayudarme con este tema:

Dispongo un formulario de contacto que aunque esté basado en php el código que no estoy seguro si falla es html, no estaba seguro de ponerlo en esta sección ya que encontre un formulario parecido aquí.
resulta que parece que está todo correcto ya que al escribir los datos y darle a enviar, me devuelve los errores si los cometo, y si no los cometo me salta el mensaje de enviado correctamente, pero no termina de llegarme el correo a mi mail,
éste código lo usé anteriormente y funcionaba, pero no se que es lo que le falta, ya tiene todos los estilos que quiero, solo me falta que funcione correctamente, he probado muchos tutoriales que he encontrado por aqui, modificando el codigo y nada, aunque todos los formularios se parecen, mucho código es distinto, por lo tanto algo complicado, aqui os lo dejo:


Código:
<div class="grid_9_1">
                        <h3>Formulario de Contacto</h3>

						
						
						<h5 id="obligatext"><font color="red">*</font> <u>Campos obligatorios</u></h5>
					<br>
					<?php
						$action=$_REQUEST['action'];
						if ($action=="")    /* display the contact form */
							{
					?>
							<form  action="" method="POST" enctype="multipart/form-data">
							<input id="label" type="hidden" name="action" value="submit" class="animated delay2 fadeInRight" style="padding: 5px;"/>
							<h5 class="animated delay2 fadeInRight" style="text-align:left;">Nombre:<font color="red">*</font></h5>
						
							<input id="label" name="nombre" type="text" value="" size="100%" class="animated delay2 fadeInRight" style="padding: 5px;"/>
							
							<br>
							<h5 class="animated delay2 fadeInRight" style="text-align:left;">E-Mail:<font color="red">*</font></h5>
							
							<input id="label" name="email" type="text" value="" size="100%" class="animated delay2 fadeInRight" style="padding: 5px;"/>
							
							<br>
							<h5 class="animated delay2 fadeInRight" style="text-align:left;">Teléfono de Contacto:</h5>
						
							<input id="label" name="telefono" type="text" value="" size="100%" class="animated delay2 fadeInRight" style="padding: 5px;"/>
							
							<br>				
							<h5 class="animated delay2 fadeInRight" style="text-align:left;">Mensaje:<font color="red">*</font></h5>
					
							<textarea name="mensaje" rows="7" cols="100%" class="animated delay2 fadeInRight" style="padding: 5px;"></textarea>
							
							<br><br>
							<input id="submit_button" type="submit" value="Enviar" class="animated delay4 fadeInUp" />
							
							</form>
					<?php
							} 
						
							
					else {
								// Marco los campos obligatorios
								$nombre=$_REQUEST['nombre'];
								$email=$_REQUEST['email'];
								$mensaje=$_REQUEST['mensaje'];
								$correo = trim($_POST['email']);
								
								if (($nombre=="")||($email=="")||($mensaje==""))
								{
								echo "<h5 class='animated delay2 bounce'><img src='./images/mal.png' width='30px' height='30px'> <strong style='color:white'>Falta algun campo obligatorio por rellenar.<br><br>Por favor, complete los datos que falten del formulario <a href='javascript:history.back(1)'>pinchando aquí</a>.</strong></h5>";
								}
								
								else{ 
										if(!preg_match("/^(?:[\w\d]+\.?)+@(?:(?:[\w\d]\-?)+\.)+\w{2,4}$/", $_POST['email'])) {
										
										echo "<h5 class='animated delay2 bounce'>
										<img src='./images/mal.png' width='30px' height='30px'> 
										E-mail incorrecto
										<br><br>
										<a href='javascript:history.back(1)'>< Volver a corregirlo</a></h5> ";
										}
										
										else{	
												if(
												!isset($_POST['nombre']) ||
												!isset($_POST['email']) ||
												!isset($_POST['telefono']) ||
												!isset($_POST['mensaje'])
												) 
												
												$email_mensaje .= "Nombre: " . $_POST['nombre'] . "\n";
												$email_mensaje .= "E-mail: " . $_POST['email'] . "\n";
												$email_mensaje .= "Teléfono: " . $_POST['telefono'] . "\n";
												$email_mensaje .= "Comentario: " . $_POST['mensaje'] . "\n\n";
												
												// Ahora se envía el e-mail usando la función mail() de PHP
												$result = 'Email enviado correctamente';   
													$from="From: $nombre<$email>\r\nReturn-path: $email";
													$subject="Un cliente acaba de contactar contigo desde la web I.M.I.S.";
													mail("***@gmail.com", $subject, $email_mensaje, $from);
													echo "<h5 class='animated delay2 bounce'>
													<img src='./images/bien.png' width='30px' height='30px'> 
													Mensaje enviado!
													<br><br>
													<a href='javascript:history.back(1)'>< Volver atrás</a>
													<br><br>
													<a href='http://www.***.com'> < Volver al Inicio</a></h5>";
											}
									}
							}
					?>
                    </div>

He censurado el correo y la web, pero en mi código lo tengo bien escrito, no le encuentro la falla. No se si puedo poner la web original, pero en el caso de que se pueda decidmelo y os paso un link para ver éste código en funcionamiento.

Espero que puedan encontrarle la falla, sino ya me hace pensar que sea del hosting o algo nose :(

Un saludo y gracias a todos los aportadores de Foros del Web, hacen un gran trabajo :)
  #2 (permalink)  
Antiguo 18/05/2016, 08:55
Avatar de Defaced  
Fecha de Ingreso: febrero-2016
Mensajes: 60
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Problema al ejecutar formulario de contacto

Amigo en esta parte

Código PHP:
Ver original
  1. <form  action=""

Debes especificar la accion, si no tienes un formulario que no sirve para nada, la accion es el codigo php que se ejecuta para enviar el formulario.

De paso pregunta en Php alli te dan mejor informacion. Pero primero mira si es eso
__________________
Si tienes conocimientos y quieres enseñar, Enseña con paciencia y sin arrogancia, Recuerda que tu un día también estabas en la situación de la persona que pregunta
  #3 (permalink)  
Antiguo 18/05/2016, 11:52
 
Fecha de Ingreso: julio-2010
Mensajes: 37
Antigüedad: 13 años, 9 meses
Puntos: 1
Pregunta Respuesta: Problema al ejecutar formulario de contacto

Hola Defaced, investigando un poco mas encontre varias webs con un código similar a ese, y por lo que parece no es necesario nada en la etiqueta de acción="".
La información del formulario se envía a la página en la que se inserta para su procesamiento, en éste caso la informacion está en la misma web, y se hacen llamadas al igual que para el nombre, el mensaje, el teléfono, etc.

Código:
                                $nombre=$_REQUEST['nombre'];
				$email=$_REQUEST['email'];
				$mensaje=$_REQUEST['mensaje'];
				$correo = trim($_POST['email']);
								
		if (($nombre=="")||($email=="")||($mensaje==""))
	{
Fijate, y el action igual:

Código:
                        <?php
				$action=$_REQUEST['action'];
				if ($action=="")    /* display the contact form */
				{
			?>
Yo no entiendo mucho de php, pero de todas formas anteriormente usé éste mismo codigo como dije, lo que no se si está del todo completo, o modifique algo para que no funcione, si un mod puede transladarme el post a PHP se lo agradeceria, sino intentare crear un tema alli con el mismo contenido.

Muchas gracias igualmente Defaced por tu sugerencia :) asi descartamos cositas ^^
  #4 (permalink)  
Antiguo 18/05/2016, 12:22
Avatar de Defaced  
Fecha de Ingreso: febrero-2016
Mensajes: 60
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Problema al ejecutar formulario de contacto

Hola.

Si lastimosamente vi esa parte despues de hacer el comentario, y bueno sabes que ya no hay vuelta de hoja cuando respondes.
Pero estoy casi seguro que en action debe ir alguna accion de php para enviar el formulario, la mayoria por no decir todos los formularios de validacion, contacto etc etc, siempre lo he visto que deben llevar un action.

Mas sin embargo amigo en el foro de Php hay muchos expertos en estos temas que te diran la respuesta precisa en este tema y no daran tantas vueltas como te las podria dar yo.

Suerte y espero que lo arregles.
__________________
Si tienes conocimientos y quieres enseñar, Enseña con paciencia y sin arrogancia, Recuerda que tu un día también estabas en la situación de la persona que pregunta
  #5 (permalink)  
Antiguo 18/05/2016, 16:52
 
Fecha de Ingreso: julio-2010
Mensajes: 37
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Problema al ejecutar formulario de contacto

Bueno parece que he localizado el problema, de todas formas lo comparto para que mas gente le de uso a éste codigo, ya que no necesitas hacer ningun archivo externo para el formulario, lo coje directamente del codigo php.

El principal problema es que me mandaba los correos al correo SPAM, por el resto funciona perfectamente, no es mas que cojer este codigo, pegarlo en un archivo .php, se le añade el correo tuyo y listo, todos los class los puedes modificar y funciona a la perfeccion.

Lo del correo spam lo he solucionado añadiendole unos headers al código, así van directos a la bandeja de entrada, aquí pueden verlo y donde situo los headers en éste código:


Código:
                                                                $nombre=$_REQUEST['nombre'];
								$email=$_REQUEST['email'];
								$mensaje=$_REQUEST['mensaje'];
								$correo = trim($_POST['email']);
								
								$headers = "MIME-Version:1.0;\r|n";
								$headers .= "Content-type: text/html \r\n charset='iso-8859-1; \r\n'";
								$headers .= "$from \r\n";
								$headers .= "To: $email \r\n Subject: $subject \r\n";
								
								if (($nombre=="")||($email=="")||($mensaje==""))
								{
								echo "<h5 class='animated delay2 bounce'><img src='./images/mal.png' width='30px' height='30px'> <strong style='color:white'>Falta algun campo obligatorio por rellenar.<br><br>Por favor, complete los datos que falten del formulario <a href='javascript:history.back(1)'>pinchando aquí</a>.</strong></h5>";
								}
Tambien he duplicado 1 linea de "$email_mensaje" la de nombre, ya que no aparecia en el correo y al duplicarla sí:

Código:
 
$email_mensaje .= "Nombre: " . $_POST['nombre'] . "\n";
$email_mensaje .= "Nombre: " . $_POST['nombre'] . "\n";
$email_mensaje .= "E-mail: " . $_POST['email'] . "\n";
$email_mensaje .= "Teléfono: " . $_POST['telefono'] . "\n";
$email_mensaje .= "Comentario: " . $_POST['mensaje'] . "\n\n";

Y nada chicos, os adjunto todo el codigo funcionando a la perfección para que puedan utilizarlo, y un par de capturas de como se ve el e-mail al que lo recibe, he pintado de rojo lo principal a modificar.


Código:
 <h3>Formulario de Contacto</h3>

						
						
						<h5 id="obligatext"><font color="red">*</font> <u>Campos obligatorios</u></h5>
					<br>
					<?php
						$action=$_REQUEST['action'];
						if ($action=="")    /* display the contact form */
							{
					?>
							<form  action="" method="POST" enctype="multipart/form-data">
							<input id="label" type="hidden" name="action" value="submit" class="animated delay2 fadeInRight" style="padding: 5px;"/>
							<h5 class="animated delay2 fadeInRight" style="text-align:left;">Nombre:<font color="red">*</font></h5>
						
							<input id="label" name="nombre" type="text" value="" size="100%" class="animated delay2 fadeInRight" style="padding: 5px;"/>
							
							<br>
							<h5 class="animated delay2 fadeInRight" style="text-align:left;">E-Mail:<font color="red">*</font></h5>
							
							<input id="label" name="email" type="text" value="" size="100%" class="animated delay2 fadeInRight" style="padding: 5px;"/>
							
							<br>
							<h5 class="animated delay2 fadeInRight" style="text-align:left;">Teléfono de Contacto:</h5>
						
							<input id="label" name="telefono" type="text" value="" size="100%" class="animated delay2 fadeInRight" style="padding: 5px;"/>
							
							<br>				
							<h5 class="animated delay2 fadeInRight" style="text-align:left;">Mensaje:<font color="red">*</font></h5>
					
							<textarea name="mensaje" rows="7" cols="100%" class="animated delay2 fadeInRight" style="padding: 5px;"></textarea>
							
							<br><br>
							<input id="submit_button" type="submit" value="Enviar" class="animated delay4 fadeInUp" />
							
							</form>
					<?php
							} 
						
							
					else {
								// Marco los campos obligatorios
								$nombre=$_REQUEST['nombre'];
								$email=$_REQUEST['email'];
								$mensaje=$_REQUEST['mensaje'];
								$correo = trim($_POST['email']);
								
								$headers = "MIME-Version:1.0;\r|n";
								$headers .= "Content-type: text/html \r\n charset='iso-8859-1; \r\n'";
								$headers .= "$from \r\n";
								$headers .= "To: $email \r\n Subject: $subject \r\n";
								
								if (($nombre=="")||($email=="")||($mensaje==""))
								{
								echo "<h5 class='animated delay2 bounce'><img src='./images/mal.png' width='30px' height='30px'> <strong style='color:white'>Falta algun campo obligatorio por rellenar.<br><br>Por favor, complete los datos que falten del formulario <a href='javascript:history.back(1)'>pinchando aquí</a>.</strong></h5>";
								}
								
								else{ 
										if(!preg_match("/^(?:[\w\d]+\.?)+@(?:(?:[\w\d]\-?)+\.)+\w{2,4}$/", $_POST['email'])) {
										
										echo "<h5 class='animated delay2 bounce'>
										<img src='./images/mal.png' width='30px' height='30px'> 
										E-mail incorrecto
										<br><br>
										<a href='javascript:history.back(1)'>< Volver a corregirlo</a></h5> ";
										}
										
										else{	
												if(
												!isset($_POST['nombre']) ||
												!isset($_POST['email']) ||
												!isset($_POST['telefono']) ||
												!isset($_POST['mensaje'])
												) 
												
												$email_mensaje .= "Nombre: " . $_POST['nombre'] . "\n";
												$email_mensaje .= "Nombre: " . $_POST['nombre'] . "\n";
												$email_mensaje .= "E-mail: " . $_POST['email'] . "\n";
												$email_mensaje .= "Teléfono: " . $_POST['telefono'] . "\n";
												$email_mensaje .= "Comentario: " . $_POST['mensaje'] . "\n\n";
												
												// Ahora se envía el e-mail usando la función mail() de PHP
													$result = 'E-mail enviado correctamente';   
													$from="From: $nombre<$email>\r\nReturn-path: $email";
													$subject="**Escribe el asunto con el que recibiras el e-mail**";
													mail("**vuestrocorreo***@***.**", $subject, $email_mensaje, $from);
													echo "<h5 class='animated delay2 bounce'>
													<img src='./images/bien.png' width='30px' height='30px'> 
													Mensaje enviado!
													<br><br>
													<a href='javascript:history.back(1)'>< Volver atrás</a>
													<br><br>
													<a href='http://www.**poner el home de la web**.com'> < Volver al Inicio</a></h5>";
											}
									}
							}
					?>
Enlace Formulario HTML

Enlace Formulario HTML 2

Enlace Bandeja de entrada en correo

Enlace Mensaje Recibido


Espero que os sirva a todos chicos y gracias por la ayuda :)

Etiquetas: contacto, form, formulario, html, input, text, todo
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 00:19.