[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 :
¿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...
Descargar Image by Image Ver Image 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...
[Word] Descargar word gratuitamente VerWord Word es un procesador de texto creado por Microsoft, y actualmente integrado en la suite ofimática Microsoft Office, y claro esta que la suite ofimática de Microsoft es de pago :) con lo cual ya podemos olvidar de descargarlo. Si ya habéis...
[Lenguajes] Enviar un email con un archivo adjunto VerTanto 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...
Protocolo IPv6 VerDocumento escrito por Nico VanHaute Historia del protocolo IP Los días del protocolo IP en su formato actual (IPv4) están contados. A partir de la mitad de la década de los 90, las universidades, las industrias de alta tecnología y el gobierno...
Windows Processes - Introduction VerIntroduction to Processes To make it more versatile, Microsoft Windows is structured around services (processes) which run in the background. The list of processes currently running may be viewed by pressing CTRL+ALT+DEL simultaneously, then clicking...