Foros del Web » Programando para Internet » PHP »

Problema con formulario de contacto

Estas en el tema de Problema con formulario de contacto en el foro de PHP en Foros del Web. Buenas, Antes de nada me presento. Me llamo Víctor tengo 19 años y llevo bastante tiempo en esto del diseño web pero no soy para ...
  #1 (permalink)  
Antiguo 13/04/2012, 12:11
Avatar de vistor92  
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 20
Antigüedad: 12 años, 7 meses
Puntos: 0
Problema con formulario de contacto

Buenas,

Antes de nada me presento. Me llamo Víctor tengo 19 años y llevo bastante tiempo en esto del diseño web pero no soy para nada un experto jejeje.

Estoy intentando crear un formulario para una web que estoy diseñando, quiero que sea directo sin tener que lanzar el Gmail ni ningún otro cliente de correo electrónico.

El problea es que al enviar sale una página de error, pero el mensaje llega aunque vacío en el texto. En la página parece esto:

Código:
Warning: Cannot modify header information - headers already sent by (output started at /home/s018223b/public_html/enviar.php:9) in /home/s018223b/public_html/enviar.php on line 28
Aquí os dejo los códigos que he cogido de goolge y estoy utilizando:

En el contacto.html
Código:
<form id="form1" name="form1" method="post" action="http://XXX.com/enviar.php"><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="90%"><TR><TD width="30%"><DIV align="right"><B>Name:</B></DIV></TD><TD width="70%"><INPUT type="text" name="name" size="20"></TD></TR><TR><TD><DIV align="right"><B>Email:</B></DIV></TD><TD><INPUT type="text" name="email" size="20"></TD></TR><TR><TD><DIV align="right"><B>Comment:</B></DIV></TD><TD><TEXTAREA name="comment" cols="30" wrap="virtual" rows="4"></TEXTAREA></TD></TR><TR><TD>&nbsp;</TD><TD><INPUT type="submit" name="submit" value="Submit"><INPUT type="reset" name="reset" value="Reset"></TD></TR></TABLE></FORM>
Y aquí el archivo enviar.php

Código:
<?php

$mail='[email protected]';


$nombre = $_POST['nombre'];
$telefono = $_POST['telefono'];
$email = $_POST['email'];
$mensaje = $_POST['mensaje'];

$thank="index.html";

$message = "
nombre:".$nombre."
telefono:".$telefono."
email:".$email."
mensaje:".$mensaje."";

if (mail($mail,"Formulario de Consulta",$message))
Header ("Location:$thank");

?>

Espero que me puedan ayudar. Muchas gracias!!

Un saludo.
  #2 (permalink)  
Antiguo 13/04/2012, 12:16
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Problema con formulario de contacto

no puedes usar header location al final de un archivo, usa otro metodo para redireccionar.
  #3 (permalink)  
Antiguo 13/04/2012, 12:16
 
Fecha de Ingreso: abril-2012
Ubicación: Leon Gto
Mensajes: 21
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Problema con formulario de contacto

intenta cambiando esta linea:

Header ("Location:$thank");
por esta:
echo '<META HTTP-EQUIV="Refresh" CONTENT="0; URL='.$thank.'">';
  #4 (permalink)  
Antiguo 13/04/2012, 12:25
 
Fecha de Ingreso: abril-2008
Ubicación: Chihuahua Mexico
Mensajes: 166
Antigüedad: 16 años, 6 meses
Puntos: 15
Respuesta: Problema con formulario de contacto

el header(location) no lo puedes usar si as impreso HTML o aveces por saltos de linea o espacios en blanco antes del header location, como te dijo cesar43f puedes usar un redireccionamiento en HTML o yo te recomiendo mejor en JavaScript

saludos.
  #5 (permalink)  
Antiguo 13/04/2012, 14:34
Avatar de vistor92  
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 20
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario de contacto

Muchas gracias a todos por las rápidas respuestas.

Cita:
Iniciado por cesar43f Ver Mensaje
intenta cambiando esta linea:

Header ("Location:$thank");
por esta:
echo '<META HTTP-EQUIV="Refresh" CONTENT="0; URL='.$thank.'">';
He probado a hacer eso y ahora no recibo el mail y me sale el siguiente error:

Código:
Parse error: syntax error, unexpected '<' in /home/s018223b/public_html/enviar.php on line 28

Un saludo, gracias.
  #6 (permalink)  
Antiguo 13/04/2012, 16:46
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 13 años
Puntos: 67
Respuesta: Problema con formulario de contacto

Que raro, mira que lo hayas escrito bien y revisa no haya algun < por ahi suelto
Si no prueba a scarlo del código php y ponerlo como html
  #7 (permalink)  
Antiguo 16/04/2012, 02:12
Avatar de vistor92  
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 20
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario de contacto

Sí si que es raro pero creo que el problema es que he puesto tal cual las líneas que me dijo cesar43f:

Código:
Header ("Location:$thank");
por esta:
echo '<META HTTP-EQUIV="Refresh" CONTENT="0; URL='.$thank.'">';
En esa última, tengo que modificar algo poniendo la URL de mi sitio?

Un saludo y gracias!
  #8 (permalink)  
Antiguo 16/04/2012, 02:46
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 13 años
Puntos: 67
Respuesta: Problema con formulario de contacto

Se supone que la varibale $thank contiene la ruta a tu página de gracias, no?
Si no es así escribe ahí la ruta.
  #9 (permalink)  
Antiguo 16/04/2012, 16:29
Avatar de vistor92  
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 20
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario de contacto

Entonces tengo que dejar el código así:

echo '<META HTTP-EQUIV="Refresh" CONTENT="0; URL='.$thank.html'">';

Por ejemplo? Y en el archivo ese pongo una página normal para decir que el email ha sido enviado con éxito?

No hay alguna forma para que el usuario que envia el email permanezca en la misma página y dentro del formulario salga lo de "gracias"?

Un saludo y gracias!
  #10 (permalink)  
Antiguo 17/04/2012, 01:12
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 13 años
Puntos: 67
Respuesta: Problema con formulario de contacto

A lo primero, no, esto:
echo '<META HTTP-EQUIV="Refresh" CONTENT="0; URL='.$thank.html'">';
Eso es incorrecto, el carácter $ en php indica que se trata de una varibale, podrías hacer esto:
Código PHP:
$thank "gracias.html";
echo 
'<META HTTP-EQUIV="Refresh" CONTENT="0; URL='.$thank.'">'
o bien esto:
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=gracias.html">

Y con respecto a tu segunda pregunta, si, claro que puedes poner gracias en la misma página, en vez de redireccionar puedes poner:
if (mail($mail,"Formulario de Consulta",$message)) echo 'Gracias';
  #11 (permalink)  
Antiguo 19/04/2012, 10:46
Avatar de vistor92  
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 20
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario de contacto

Cita:
Iniciado por zalito12 Ver Mensaje
A lo primero, no, esto:
echo '<META HTTP-EQUIV="Refresh" CONTENT="0; URL='.$thank.html'">';
Eso es incorrecto, el carácter $ en php indica que se trata de una varibale, podrías hacer esto:
Código PHP:
$thank "gracias.html";
echo 
'<META HTTP-EQUIV="Refresh" CONTENT="0; URL='.$thank.'">'
o bien esto:
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=gracias.html">

Y con respecto a tu segunda pregunta, si, claro que puedes poner gracias en la misma página, en vez de redireccionar puedes poner:
if (mail($mail,"Formulario de Consulta",$message)) echo 'Gracias';
Muchas gracias por la respuesta y tu paciencia zalito12 :D

He insertado la última línea que me has dicho, y al cumplimentar el formulario en la web recibo el correo pero está vacío, tan solo sale la dirección que he rellenado. El Nombre, Telefono y mensaje aparece vacío.

ASimismo, salta a la página de gracias. Habría alguna posibilidad de permanecer en la página web en el apartado de contacto?

Un saludo y gracias de nuevo

Etiquetas: contacto, formulario, html
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 22:10.