Foros del Web » Programando para Internet » PHP »

este warning en un form php que significa?

Estas en el tema de este warning en un form php que significa? en el foro de PHP en Foros del Web. Hola amigos foreros: Espero se la esten pasando de lo mejor en estos dias... yo no tanto Resulta que despues de racar y rascar en ...
  #1 (permalink)  
Antiguo 30/09/2003, 03:49
Avatar de stanmx  
Fecha de Ingreso: noviembre-2002
Ubicación: Tijuana
Mensajes: 192
Antigüedad: 15 años, 1 mes
Puntos: 0
este warning en un form php que significa?

Hola amigos foreros:

Espero se la esten pasando de lo mejor en estos dias... yo no tanto

Resulta que despues de racar y rascar en la red, me encontre un tuto de como hacer un formulario en php, asi que me dispuse a subirlo en mi sitio y oh sorpresa no funcionaba.

el servidor es un servidor windows nt, asi que al parecer solo php4 (que es eso de php4, alguien sabe?)

despues lo subi en lycos y pues si funciono a la perfeccion; por ultimo lo he subido en otro servidor que ni idea de en que plataforma este... pero lo curioso es que me marca un mensaje al momento de enviar el formulario y mandarme a la pagina de agradecimiento....

Warning: Cannot add header information - headers already sent by (output started at /home/virtual/site128/fst/var/www/html/test_php/thanks.php:8) in /home/virtual/site128/fst/var/www/html/test_php/thanks.php on line 15
Gracias... regresa a pagina principal

que significa este mensaje?... pues el formulario si llego a su destino... pero este mensaje ni idea de por que me aparecio...

Me gustaria que me pudieran ayudar a decifrar por que aparece esto y como lo puedo evitar... mil gracias por su atencion... espero comentarios... que pasen un buen dia
__________________
STANMX • Buscando la accesibilidad :arriba:
  #2 (permalink)  
Antiguo 30/09/2003, 04:11
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Significa que has intentado definir un header después de "publicar" información en el cliente.

Ejemplos que dan error:
Código PHP:
<html>
<? header($header); ?>
Código PHP:
<? echo "hola"header($header); ?>
Ejemplo válido:
Código PHP:
<?
 header
($header);
?>
__________________
M a l d i t o F r i k i
  #3 (permalink)  
Antiguo 30/09/2003, 04:26
Avatar de stanmx  
Fecha de Ingreso: noviembre-2002
Ubicación: Tijuana
Mensajes: 192
Antigüedad: 15 años, 1 mes
Puntos: 0
<html>
<head>
<title>thanks</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
if($sentemail == "2"){
include("sorry.php");

}else{

$num = $sentmessage + 1;
setcookie("sentemail","$num",time()+600); //set the cookie

$email = "Sender Name:\t$name\nSender E- Mail:\t$thereemail\nMessage:\t$message\nIP:\t$RE
MOTE_ADDR\n\n";
$to = "[email protected]";
$subject = "Site Message";
$mailheaders = "From: $thereemail <> \n";
$mailheaders .= "Reply-To: $thereemail\n\n";
mail($to, $subject, $email, $mailheaders);
include("thanksecho.php");
}
?>

</body>
</html>


este es el codigo? donde esta el error entonceS?
__________________
STANMX • Buscando la accesibilidad :arriba:
  #4 (permalink)  
Antiguo 30/09/2003, 04:40
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Cita:
Código PHP:
<?
<html>
<
head>
<
title>thanks</title>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</
head>

<
body>
<?
php
if($sentemail == "2"){
include(
"sorry.php");

}else{

$num $sentmessage 1;
setcookie("sentemail","$num",time()+600); //set the cookie 
?>
setcookie() define headers, por lo tanto, primero debes definir la cookie, y luego escribir todo ese HTML.
__________________
M a l d i t o F r i k i
  #5 (permalink)  
Antiguo 30/09/2003, 05:02
Avatar de stanmx  
Fecha de Ingreso: noviembre-2002
Ubicación: Tijuana
Mensajes: 192
Antigüedad: 15 años, 1 mes
Puntos: 0
como quedaria entonces el codigo completo?
__________________
STANMX • Buscando la accesibilidad :arriba:
  #6 (permalink)  
Antiguo 30/09/2003, 16:02
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Primero la parte PHP y luego la parte HTML.
__________________
M a l d i t o F r i k i
  #7 (permalink)  
Antiguo 01/10/2003, 01:04
Avatar de stanmx  
Fecha de Ingreso: noviembre-2002
Ubicación: Tijuana
Mensajes: 192
Antigüedad: 15 años, 1 mes
Puntos: 0
hice lo que mi dijiste cain...

pero ahora aparece esto...

Warning: Cannot add header information - headers already sent by (output started at /home/virtual/site128/fst/var/www/html/test_php/thanks.php:2) in /home/virtual/site128/fst/var/www/html/test_php/thanks.php on line 9
Gracias... regresa a pagina principal

y por lo visto la line 9 es la del setcookie


__________________
STANMX • Buscando la accesibilidad :arriba:
  #8 (permalink)  
Antiguo 04/10/2003, 00:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Piensa SIEMPRE que PHP se "pre-procesa" en el servidor .. lo que "resulte" de la lógica empleada (condicionales, bucles .. etc) se enviará al navegador .. Caso de HTML, cookies .. cabeceras .. etc ..

Si te fijas en la estructura de tu pequeño script .. tienes:

* Identificas el valor de una variable ...
* Dependiendo del valor de esta:
a) muestras un mensaje de error al navegador. Esto requiere del HTML necesario para "componer" la página que se ha de mostrar en consecuencia ..
b) "Seteas" una cookie y .. bueno, no haces nada pero se supone que redireccionarás algún sitio.

Por ende .. atendiendo a la premisa que PHP genera en el servidor LO que le tiene que entregar al CLIENTE (navegador en este caso) .. quedaría así:

Código PHP:
<?php
if($sentemail == "2"){
?>
<html>
<head>
<title>thanks</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<? include("sorry.php"); ?>
</body>
</html>
<?
}else{
$num $sentmessage 1;
setcookie("sentemail","$num",time()+600); //set the cookie 
?>
Fijate que el "HTML" se genera todo en el if() si se cumple que la variable tiene el valor esperado ..

Asegurate de que antes del <? primero NO exista nada de HTML restante, saltos de línea o un simple espacio .. Todo eso es considerado como "envio de cabeceras al servidor" ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 04/10/2003, 05:56
Avatar de stanmx  
Fecha de Ingreso: noviembre-2002
Ubicación: Tijuana
Mensajes: 192
Antigüedad: 15 años, 1 mes
Puntos: 0
<?php
if($sentemail == "2"){
include("sorry.php");
}else{
$num = $sentmessage + 1;
setcookie("sentemail","$num",time()+600); //set the cookie
$email = "Sender Name:\t$name\nSender E- Mail:\t$thereemail\nMessage:\t$message\nIP:\t$REMO TE_ADDR\n\n";
$to = "[email protected]";
$subject = "Site Message";
$mailheaders = "From: $thereemail <> \n";
$mailheaders .= "Reply-To: $thereemail\n\n";
mail($to, $subject, $email, $mailheaders);
include("thanksecho.php");
}
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

</body>
</html>

asi quedo siempre, y ya funciona... gracias man por el tipo de todas maneras!!!!

y pues es el primer script que manejo en php, pero te prometo documentarme mejor para la otra
__________________
STANMX • Buscando la accesibilidad :arriba:
  #10 (permalink)  
Antiguo 07/10/2003, 08:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
stanmx

Tal cual "dejastes" el código .. si te fijas BIEN ..No tiene sentido el código HTML que pusistes (<html>.... </html>) ..

Fijate: Ejecuta tu código y edita el código HTML que estás generando (en tu navegarod edición -> ver código fuente) ..

Veras como en el caso que haces tu "sorry.php" .. ese mensaje "sale" antes (en el código HTML generado) que las própias cabeceras HTML y <body> ... Ese código generado NO sería correcto pese que la mayoría de navegadores "lo pase" ... no cumple los standares de la W3 ...

Y lo mismo para el caso del "else" donde envias el e-mail .. Ademas, si en la página resultante que muestras tu mensaje "thanksecho.php" .. recargas la página, veras como tu navegador te pide enviar denuevo las variables y en consecuencia (si aceptas) se enviaran e-mails repetidos con la misma información .... (esto si esa variable $sentmail llega por POST .. que no lo sé en tu caso).

Los "mensajes" tanto de error como de exito sería altamente recomendable que los gestionases en otra página o en la misma pero haciendo una redireección automática al terminar el proceso vía por ejemplo: header("location: pagina.tal?msg=error o exito .. ");

En resumen .. FIJATE bien que es lo que estás generando ... (HTML) y piensa en lo que te decia: como funciona PHP ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 05:54.