[PHP] Headers already sent by.....

última actualización el 11 de agosto de 2008, 21:38 por Carlos-vialfa
Publicado por Carlos-vialfa
Cuando utilizamos funciones PHP que manipulan los encabezados http, como por ejemplo:
  • header()
  • setcookie()
  • session_start()


Es importante utilizar estas funciones antes de generar el más mínimo flujo hacia el cliente. Desde el momento en que alguna información haya sido enviada al cliente (en general: un inicio de visualización de una página web), esto significará que los encabezados HTTP ya han sido enviados automáticamente a éste. Este tipo de flujo es por lo general enviado con las funciones echo, print, etc.

Si hubiera un espacio libre antes de la primera apertura de etiqueta php, entonces este espacio podría ser enviado como inicio de página web al cliente y por lo tanto automáticamente le precederán encabezados http para indicarle al cliente de que tipo de flujo se trata. A continuación un ejemplo de encabezado con la página de inicio de CCM:

Server: Apache
X-Powered-By: Php/4.4.0-0.dotdeb.0
Keep-Alive: timeout=15, max=50
Connection: Keep-Alive
Transfert-Encoding: chunked
Content-type: text/html; charset=iso-8859-1

Entonces debemos comprender bien el sistema:
  • Utilizamos echo, o print al inicio de nuestro script. Del mismo modo, si tenemos un espacio en nuestro script que no está comprendido dentro de nuestras etiquetas php, éste será considerado como parte de la fuente de la página que se va a enviar, y le precederán los encabezados. Lo que puede provocar un error cuya solución nos puede tomar varios días en encontrarla :-)
  • El servidor envía estos datos, y por defecto los hace preceder de encabezados que indican que es una página html.
  • Si después de esto utilizamos en nuestro script una función que modifica los encabezados, ésta ya no tendrá efecto ya que los encabezados ya han sido enviados. Entonces obtendremos un error del tipo "headers already sent".


PD: El artículo original fue escrito por kilian contribuidor de CommentCaMarche
Mejores respuestas para « Headers already sent by..... » en :
[Lenguajes] Enviar un email con un archivo adjunto Ver Tanto los emails como las páginas web contienen cabeceras (headers en inglés). Estas cabeceras sirven para dar información necesaria como la dirección del destinatario, la del remitente, la fecha de envío, el asunto del email, etc. Estas son...
¿Qué es 3D Secure / Verified by Visa / SecureCode? Ver Desde octubre del 2008, los bancos y tiendas en línea han comenzado a adoptar el sistema 3DSecure para los pagos en línea. ¿Que significa 3DSecure? 3DSecure es llamado "Verified by Visa" en Visa, y "SecureCode" en Mastercard. Este sistema...
Reiniciar una secuencia VerPara reiniciar una secuencia SEQ creada con el comando: CREATE SEQUENCE SEQ; Tan solo hay que ver su valor actual mediante el comando: SELECT SEQ.CURRVAL FROM DUAL; Luego modificar la secuencia insertando la opción increment by añadiendo...
Oracle – Recuperar contraseña perdida VerEn Oracle para recuperar una contraseña perdida, basta con conectarse en modo línea de comandos en el servidor: #sqlplus /nolog SQL>conn / as sysdba SQL>alter user USUARIO identified by CONTRASEÑA; El artículo original fue escrito por wjaouadi,...
Descargar Image by Image VerImage By Image es un reproductor de video gratuito para visualizar videos "cuadro por cuadro" con el objetivo de hacer capturas de imagenes. De uso muy facil, solo abra el video, ya sea en formato AVI o WMV y seleccione la velocidad de reproduccion...
Dirección IP Ver¿Qué es una dirección IP? Los equipos comunican a través de Internet mediante el protocolo IP (Protocolo de Internet). Este protocolo utiliza direcciones numéricas denominadas direcciones IP compuestas por cuatro números enteros (4 bytes) entre 0 y...
Protocolo IP VerLa función del protocolo IP El protocolo IP es parte de la capa de Internet del conjunto de protocolos TCP/IP. Es uno de los protocolos de Internet más importantes ya que permite el desarrollo y transporte de datagramas de IP (paquetes de datos),...
MIME (Extensiones Multipropósito de Correo Internet) VerIntroducción a MIME MIME (Extensiones Multipropósito de Correo Internet) es un estándar propuesto en 1991 por Bell Communications para expandir las capacidades limitadas del correo electrónico y en particular para permitir la inserción de documentos...