Ver Mensaje Individual
  #8 (permalink)  
Antiguo 17/11/2010, 12:41
Avatar de jaao_death
jaao_death
 
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: WARNING: Cannot modify header information - headers already sent by

vamos a ver, el error se produce cuando intentas modificar o enviar una cabecera HTTP después de haber enviado datos, es decir:

Breve introducción a HTTP

La comunicación entre un servidor y un cliente web usa el protocolo HTTP como estándar (puede no ser así, pero es poco común).

El servidor necesita enviar información al cliente para que manipule el contenido de una forma u otra, esta información va e una parte de la comunicación que se llama Header (cabecera), en el header se incluye también información relativa a las Cookies y/o cualquier modificación con la función header () de php (entre otras funciones)

Después de entregar esta información envía el contenido que se busca, en nuestro caso el código HTML (también puede enviar texto sin formato o otro tipo de archivos).

Siempre en ese orden:
Servidor - Cliente
[Header fields]
[Content] (normal mente)

Antes de enviar cualquier contenido (HTML) el servidor ("Apache-PHP", por ejemplo) envía las cabeceras, para seguir el protocolo, una vez enviadas no se pueden modificar (como es obvio), tampoco se pueden añadir otras cabeceras, como es tu caso.

La mejor solución ante este problema es guardar cualquier salida ("echo") en alguna variable, y que lo último que salga sea tal contenido.

Por esto no es recomendable mezclar HTML con PHP:

Código PHP:
<!-- En este punto ya han sido enviadas las cabeceras -->
<html>
<head>
<title>Algo</title>
</head>
<body>
<?php echo $body;?><!-- esta no solo no es una buena forma sino que además
resulta sucia y difícil de mantener -->
</body>
</html>
__________________
Mucha seguridad nunca es suficiente.... Por una red segura
El señor ilustre obscurece nuestras mentes
Usas Linux? http://www.dudalibre.com/gnulinuxcounter