Foros del Web » Programando para Internet » PHP »

Error formulario php i include?

Estas en el tema de Error formulario php i include? en el foro de PHP en Foros del Web. Hola a todos: He utilizado un formulario de uno de los topics: http://www.forosdelweb.com/f91/probl...please-442648/ Todo está correcto pero me aparece este mensaje: Warning: Cannot modify header ...
  #1 (permalink)  
Antiguo 20/06/2010, 01:40
Avatar de hector_he  
Fecha de Ingreso: agosto-2006
Ubicación: Barcelona
Mensajes: 207
Antigüedad: 17 años, 8 meses
Puntos: 4
Error formulario php i include?

Hola a todos:

He utilizado un formulario de uno de los topics:
http://www.forosdelweb.com/f91/probl...please-442648/

Todo está correcto pero me aparece este mensaje:
Warning: Cannot modify header information - headers already sent by (output started at /home/santibur/domains/santiburgas.com/public_html/head.html:9) in /home/santibur/domains/santiburgas.com/public_html/cont.php on line 19

La página esta dividida con la función include:

Código:
<?php include ("head.html");?>
<?php include ("menu.html");?>

<?php
$mail='[email protected]';
 
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$message = $_POST['message'];

$thank="bio.php";

$message = "
nombre:".$nombre."
email:".$email."
message:".$message."";
  
if (mail($mail,"consulta",$message)) 
       Header ("Location: $thank");
?>

<!-- COS -->
<div id="main">
<div class="text">
<div><img src="img/headers/cont.jpg" /></div>
<br />

<form name="form1" method="post" action="cont.php">
<h4>Nombre</h4>
<input name="nombre" type="text" id="nombre">
<br /><br />
<h4>Email</h4>
<input name="email" type="text" id="email">
<br /><br />
<h4>Mensaje:</h4>
<textarea name="message" id="message"></textarea>
<br /><br /><br />
<input type="submit" name="Submit" value="Enviar">
</form> 

</div>
</div><!-- #divbody -->

<?php include ("footer.html");?>
No se que hace referencia entre headers y Header ("Location: $thank"), pero me gustaría utilizar un solo archivo y no tener que poner el código php del formualrio en otro, es posible?

Gracias!
  #2 (permalink)  
Antiguo 20/06/2010, 02:57
 
Fecha de Ingreso: junio-2002
Mensajes: 750
Antigüedad: 21 años, 10 meses
Puntos: 22
Respuesta: Error formulario php i include?

Para evitar el error no debes utilizar la función header() después de haber enviado algo al navegador (texto html con echo, etc.)

Código PHP:
Ver original
  1. <?php
  2.  
  3. $nombre = $_POST['nombre'];
  4. $email = $_POST['email'];
  5. $message = $_POST['message'];
  6.  
  7. $thank="bio.php";
  8.  
  9. $message = "
  10. nombre:".$nombre."
  11. email:".$email."
  12. message:".$message."";
  13.  
  14. if (mail($mail,"consulta",$message)){
  15.        Header ("Location: $thank");
  16. }
  17. include ("head.html");
  18. include ("menu.html");
  19. ?>

Una explicación más detallada:
  #3 (permalink)  
Antiguo 20/06/2010, 05:05
Avatar de hector_he  
Fecha de Ingreso: agosto-2006
Ubicación: Barcelona
Mensajes: 207
Antigüedad: 17 años, 8 meses
Puntos: 4
Respuesta: Error formulario php i include?

Gracias por la respuesta!!!

Pero no se por que, si pongo el nuevo orden, salta automàticamente a la pàgina de "agradecimiento" en este caso bio.php...
  #4 (permalink)  
Antiguo 20/06/2010, 06:07
 
Fecha de Ingreso: junio-2002
Mensajes: 750
Antigüedad: 21 años, 10 meses
Puntos: 22
Respuesta: Error formulario php i include?

Porque la única condición indicada para redirigir a otra página es el envío del mail, no hay una condición para indicar cuando se ha de enviar el mail (es decir, no se revisa si ha recibido datos del formulario).
Además sería conveniente filtrar los datos enviados en el formulario para evitar problemas de seguridad.
Hace tiempo que no toco php, pero un ejemplo podría ser algo parecido a lo siguiente:
Código PHP:
Ver original
  1. <?php
  2. // comprobar que se ha enviado el formulario
  3. if( isset($_POST['submit']) && isset($_POST['message']) && isset($_POST['email']) ){
  4.  
  5. // htmlentities para filtrar el contenido recibido del formulario
  6. $nombre = htmlentities($_POST['nombre']);
  7.  
  8. // revisar que la dirección de e-mail recibida mediante el formulario tenga un formato correcto
  9. if (preg_match('/^[^@\s<&>]+@([-a-z0-9]+\.)+[a-z]{2,}$/i', $_POST['email']))
  10. {
  11. $email = $_POST['email'];
  12. }
  13.  
  14. // htmlentities para filtrar el contenido recibido del formulario
  15. $message = htmlentities($_POST['message']);
  16.  
  17. $thank="bio.php";
  18.  
  19. $message = "
  20. nombre:".$nombre."
  21. email:".$email."
  22. message:".$message."";
  23.  
  24. if (mail($mail,"consulta",$message)){
  25.        Header ("Location: $thank");
  26. }
  27. }
  28. include ("head.html");
  29. include ("menu.html");
  30. ?>
  #5 (permalink)  
Antiguo 10/08/2010, 13:27
Avatar de hector_he  
Fecha de Ingreso: agosto-2006
Ubicación: Barcelona
Mensajes: 207
Antigüedad: 17 años, 8 meses
Puntos: 4
Respuesta: Error formulario php i include?

Hola, muchas gracias por la ayuda!

Pero no se porque me sigui sin funcionar...
He cambiado algunos include pero he actualizado el código, pero sigue sin hacer nada.

Código PHP:
<?php
// comprobar que se ha enviado el formulario
if( isset($_POST['submit']) && isset($_POST['message']) && isset($_POST['email']) ){
$mail='[email protected]';
 
// htmlentities para filtrar el contenido recibido del formulario
$nombre htmlentities($_POST['nombre']);
 
// revisar que la dirección de e-mail recibida mediante el formulario tenga un formato correcto
if (preg_match('/^[^@\s<&>]+@([-a-z0-9]+\.)+[a-z]{2,}$/i'$_POST['email'])) 

$email $_POST['email'];
}
 
// htmlentities para filtrar el contenido recibido del formulario
$message htmlentities($_POST['message']);
 
$thank="cont_ok.php";
 
$message "
nombre:"
.$nombre."
email:"
.$email."
message:"
.$message."";
 
if (
mail($mail,"consulta",$message)){
       
Header ("Location: $thank");
}
}
?>

<?php include ("head.html");?>
<?php 
include ("javas.html");?>
</head>
<?php include ("menu.html");?>

<!-- COS -->
<div id="main">
<div class="text">
<div><img src="img/headers/cont_cat.jpg" /></div>
<br />

<form class="form" name="form1" method="post" action="cont.php">
<h4>Name</h4>
<input name="nombre" type="text" id="nombre">
<br /><br />
<h4>Email</h4>
<input name="email" type="text" id="email">
<br /><br />
<h4>Text:</h4>
<textarea name="message" id="message"></textarea>
<br /><br />
<input class="formb" type="submit" name="Submit" value="Send">
</form> 

<br /><br />
<h4>Email &amp; Telf.</h4>
<ul>
<li>[email protected] | Telf. 872 163 523</li>
</ul>

</div>

<?php include ("pase.html");?>

<div style="clear:both;"></div>
</div><!-- #divbody -->

<?php include ("footer.html");?>
No se ha que puede ser debido...
Gracias de antemano!
  #6 (permalink)  
Antiguo 10/08/2010, 13:40
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 10
Respuesta: Error formulario php i include?

Tengo un par de preguntas:

Este archivo se llama cont.php?
No te da ningun error?

Si lo primero no es cierto, cambia en la línea <form> el action por el nombre de la página actual.

Si lo segundo es cierto, mira en el servidor si tienes la funcion mail desactivada (a mi me pasó y me dió muchos dolores de cabeza)

Si te da errores, podrías ponerlos, por favor?

También prueba con $message a ponerlo todo en una línea, a ver
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #7 (permalink)  
Antiguo 11/08/2010, 17:05
Avatar de hector_he  
Fecha de Ingreso: agosto-2006
Ubicación: Barcelona
Mensajes: 207
Antigüedad: 17 años, 8 meses
Puntos: 4
Respuesta: Error formulario php i include?

Hola markmb:
Gracias por responder.

Si, exacto este archivo se llama cont.php y la función mail está activada también.

No me da ningún, mensaje de error, tan solo escribes, picas enviar i te quedas en la misma página pero con el formulario otra vez en blanco, es decir que no va hacia cont_ok.php ($thank="cont_ok.php";) si se envía nada...

Lo de poner $message en una linia, te refieres a esto?
$message = " nombre:".$nombre." email:".$email." message:".$message."";

Gracias
  #8 (permalink)  
Antiguo 11/08/2010, 17:14
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Error formulario php i include?

en estos casos siempre digo que usen ob_start() y ob_end_flush()
Código PHP:
Ver original
  1. ob_start();//al principio de la página(primera linea)
  2. //tu código
  3. ob_end_flush();//al final de la página(última linea)
Saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #9 (permalink)  
Antiguo 12/08/2010, 04:26
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 10
Respuesta: Error formulario php i include?

Cita:
Iniciado por hector_he Ver Mensaje
Hola markmb:
Lo de poner $message en una linia, te refieres a esto?
$message = " nombre:".$nombre." email:".$email." message:".$message."";
Si, a eso me refería
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #10 (permalink)  
Antiguo 12/08/2010, 05:08
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 10
Respuesta: Error formulario php i include?

Prueba de poner echos por enmedio, a ver dónde deja de ejecutarse:

Cita:
Iniciado por hector_he Ver Mensaje
Hola, muchas gracias por la ayuda!

Pero no se porque me sigui sin funcionar...
He cambiado algunos include pero he actualizado el código, pero sigue sin hacer nada.

Código PHP:
<?php
// comprobar que se ha enviado el formulario
if( isset($_POST['submit']) && isset($_POST['message']) && isset($_POST['email']) ){
$mail='[email protected]';
echo 
$mail;
echo 
'<br/>';
 
// htmlentities para filtrar el contenido recibido del formulario
$nombre htmlentities($_POST['nombre']);
echo 
$nombre;
echo 
'<br/>';
 
// revisar que la dirección de e-mail recibida mediante el formulario tenga un formato correcto
if (preg_match('/^[^@\s<&>]+@([-a-z0-9]+\.)+[a-z]{2,}$/i'$_POST['email'])) 

$email $_POST['email'];
}
echo 
$email;
echo 
'<br/>';
 
// htmlentities para filtrar el contenido recibido del formulario
$message htmlentities($_POST['message']);
echo 
$message;
echo 
'<br/>';
 
$thank="cont_ok.php";
echo 
$thank;
echo 
'<br/>';
 
$message "
nombre:"
.$nombre."
email:"
.$email."
message:"
.$message."";
echo 
$message;
echo 
'<br/>';
 
if (
mail($mail,"consulta",$message)){
      
// Header ("Location: $thank"); Comentado por que sinó dirá que los headers han sido enviados
}
}
?>

<?php include ("head.html");?>
<?php 
include ("javas.html");?>
</head>
<?php include ("menu.html");?>

<!-- COS -->
<div id="main">
<div class="text">
<div><img src="img/headers/cont_cat.jpg" /></div>
<br />

<form class="form" name="form1" method="post" action="cont.php">
<h4>Name</h4>
<input name="nombre" type="text" id="nombre">
<br /><br />
<h4>Email</h4>
<input name="email" type="text" id="email">
<br /><br />
<h4>Text:</h4>
<textarea name="message" id="message"></textarea>
<br /><br />
<input class="formb" type="submit" name="Submit" value="Send">
</form> 

<br /><br />
<h4>Email &amp; Telf.</h4>
<ul>
<li>[email protected] | Telf. 872 163 523</li>
</ul>

</div>

<?php include ("pase.html");?>

<div style="clear:both;"></div>
</div><!-- #divbody -->

<?php include ("footer.html");?>
No se ha que puede ser debido...
Gracias de antemano!
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #11 (permalink)  
Antiguo 22/08/2010, 11:11
Avatar de hector_he  
Fecha de Ingreso: agosto-2006
Ubicación: Barcelona
Mensajes: 207
Antigüedad: 17 años, 8 meses
Puntos: 4
Respuesta: Error formulario php i include?

Hola a todos:
Pues he probado con las dos soluciones, incluir los ob_start() y ob_end_flush() junto con poner la linia de $message pero sigue haciendo lo mismo...

Lo de poner echo, se más o menos lo que son pero no se como aplicarlos... Me podrías dar un ejemplo?

Gracias a todos!
  #12 (permalink)  
Antiguo 22/08/2010, 11:23
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 10
Respuesta: Error formulario php i include?

Hola!

Mira:

Código PHP:
 <?php
// comprobar que se ha enviado el formulario
if( isset($_POST['submit']) && isset($_POST['message']) && isset($_POST['email']) ){
$mail='[email protected]';
echo 
$mail;//aqui se sabe si entra o no en la codición
echo '<br/>';
 
// htmlentities para filtrar el contenido recibido del formulario
$nombre htmlentities($_POST['nombre']);
echo 
$nombre;//aquí se sabe si el valor enviado en el campo nombre es correcto
echo '<br/>';
 
// revisar que la dirección de e-mail recibida mediante el formulario tenga un formato correcto
if (preg_match('/^[^@\s<&>]+@([-a-z0-9]+\.)+[a-z]{2,}$/i'$_POST['email'])) 

$email $_POST['email'];
}
echo 
$email;//aquí se sabe si el mail es o no correcto
echo '<br/>';
 
// htmlentities para filtrar el contenido recibido del formulario
$message htmlentities($_POST['message']);
echo 
$message;//aquí se sabe el mensaje, a ver si es el mismo que el enviado
echo '<br/>';
 
$thank="cont_ok.php";
echo 
$thank;//aquí se ve si se ha puesto bien o no la variable thank
echo '<br/>';
 
$message "
nombre:"
.$nombre."
email:"
.$email."
message:"
.$message."";
echo 
$message//aquí se debería ver el mensaje bien, tal como se va a enviar
echo '<br/>';
 
if (
mail($mail,"consulta",$message)){
      
// Header ("Location: $thank"); Comentado por que sinó dirá que los headers han sido enviados
      
echo ('Enviado'); //Para saber si se ha enviado
}
}
?>

<?php include ("head.html");?>
<?php 
include ("javas.html");?>
</head>
<?php include ("menu.html");?>

<!-- COS -->
<div id="main">
<div class="text">
<div><img src="img/headers/cont_cat.jpg" /></div>
<br />

<form class="form" name="form1" method="post" action="cont.php">
<h4>Name</h4>
<input name="nombre" type="text" id="nombre">
<br /><br />
<h4>Email</h4>
<input name="email" type="text" id="email">
<br /><br />
<h4>Text:</h4>
<textarea name="message" id="message"></textarea>
<br /><br />
<input class="formb" type="submit" name="Submit" value="Send">
</form> 

<br /><br />
<h4>Email &amp; Telf.</h4>
<ul>
<li>[email protected] | Telf. 872 163 523</li>
</ul>

</div>

<?php include ("pase.html");?>

<div style="clear:both;"></div>
</div><!-- #divbody -->

<?php include ("footer.html");?>
echo lo que hace es escribir algo en pantalla, sino, míralo en el manual oficial: http://es.php.net/manual/es/function.echo.php
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....

Etiquetas: include, formulario
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 17:49.