Foros del Web » Programando para Internet » PHP »

por que este error?

Estas en el tema de por que este error? en el foro de PHP en Foros del Web. el error es el siguiente: Warning: Cannot add header information - headers already sent by (output started at /var/www/html/ejem/conec6.php:7) in /var/www/html/ejem/conec6.php on line 27 y ...
  #1 (permalink)  
Antiguo 08/07/2003, 16:49
 
Fecha de Ingreso: enero-2003
Mensajes: 286
Antigüedad: 21 años, 3 meses
Puntos: 0
por que este error?

el error es el siguiente:

Warning: Cannot add header information - headers already sent by (output started at /var/www/html/ejem/conec6.php:7) in /var/www/html/ejem/conec6.php on line 27

y la linea es la siguiente:

$nr = pg_numrows ($result);
if ($nr==0){
header ("Location:no_deuda.php?"); //esta es la linea
exit;}

Saludos
Reckba
  #2 (permalink)  
Antiguo 08/07/2003, 17:02
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Cuando mandas un header, no debes mandar antes NADA al navegador, ningun echo, print o html directo...
__________________
Manoloweb
  #3 (permalink)  
Antiguo 08/07/2003, 17:25
 
Fecha de Ingreso: enero-2003
Mensajes: 286
Antigüedad: 21 años, 3 meses
Puntos: 0
y como lo hago con el codigo HTML directo que tengo antes, lo tiro despues del header o que, no se.

Saludos
Reckba
  #4 (permalink)  
Antiguo 08/07/2003, 17:35
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Asi es...

primero procesas headers, envio de sesiones, envío de cookies... y luego sacas el HTML
__________________
Manoloweb
  #5 (permalink)  
Antiguo 08/07/2003, 18:17
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
un comentario al tema.... yo he tenido problemas con el header y no he podido solucionarlo de ninguna manera... hasta que me encontre con esto: ob_start();.... lo puse en la 1º lina de mi codigo, solo el php que no puedo corregir el header..... y ya no hay Error.... curioso...

pq pasa eso ManoloWeb...?
__________________
3w.valenciadjs.com
3w.laislatv.com
  #6 (permalink)  
Antiguo 08/07/2003, 19:24
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Bueno, esos casos "fantasma" suelen provenir de 2 diferentes fuentes:

1.- Que antes de enviar el header se genere algun error o "warning" de PHP, y esto genera una salida involuntaria al navegador...

2.- Que antes de la primera linea de código haya un espacio o una linea en blanco, por ejemplo (marco la linea como inicio del archivo):

_________________________________________
&nbsp;<?
bla, bla, codigo, bla...

En este caso, antes del inicio de PHP (<?) hay un espacio, que es interpretado por PHP como una salida de html intencional. Mismo caso con algo así...

_______________________________________________

<?
bla bla bla...


Una linea en blanco esta causando la salida de html al navegador.


Es obvio que este tipo de estructuras tambien mande error:

Código PHP:
<?
$tal
="esto";
mysql_query("select tal cosa");
?>

<html>
<head>
<title>Esta es mi pagina</title>
</head>
<body>

<?
if ($esto == $aquello){
header ("Location: tal.php")
} else {
?>

<table>
 etc, etc...
Como podrás notar, las salidas de html antes del header, provocarán un error...


La solución que tu has utilizado tiene el efecto de ir "guardando" toda salida hacia el navegador en un "canasto" que mantiene en el servidor hasta que termina el script o encuentra un ob_flush(), por lo tanto SI te permite agregar headers aunque existan echo() o similares.


LA ESCENCIA DE TODO ESTO ES...

Los headers son unos parametros que el servidor le entrega al navegador para decirle como tratar al contenido que viene a continuación, y siempre vienen como principio de la transmision de datos.

Si nosotros le enviamos algo al navegador, el servidor le entrega por defecto un conjunto de headers "estandar" y en seguida nuestra salida html... dejando el "canal" abierto para seguir enviando el resto de nuestra pagina. Por lo tanto YA NO se pueden enviar mas headers...

Una buena analogía podría ser la descarga de un archivo...

Imagina que entras a un web que te permite bajar un software en su versión 1.0 ó 1.5, ya sea en inglés o español... una vez que has seleccionado la version 1.5 en español, el archivo comienza a enviarse................ te empieza a entregar los bytes uno tras otro (imagina que esto es el HTML que ya se ha comenzado a enviar)

A la mitad de la descarga se te ocurre que mejor quieres el de INGLES!!!, bueno, pues ya no puedes cambiar el "encabezado" de tu requerimiento, o te esperas a que baje este, o lo cancelas y vuelves a mandar nuevos "encabezados" solicitando la version correcta...

Bueno, está medio enredado y la analogía puede no ser perfecta, pero espero que de algo ayude...

Saludos!
__________________
Manoloweb
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:29.