sábado, 9 de noviembre de 2013

Error PHP Warning: Cannot modify header information - headers already sent by

Como programador PHP en algún momento te habrás encontrado con este mensaje de error al momento de usar cookies ó haciendo una redirección con PHP  :

Warning: Cannot modify header information - headers already sent by

El problema con este error es que en algún lado de tu script php ya se ha enviado información sobre tu pagina web, por ejemplo con algún echo o algo asi. Estos casos son mas comunes cuando estas trabajando un en proyecto existente y no sabes por donde esta la linea de código que ha enviado información.

Para resolver este problema tiene que usar Output Buffering para evitar que se envie informacion al navegador antes de tiempo. Normalmente PHP  sin output buffering envia al navegador el codigo generado por tu script en pedazos, cada vez que encuentra un echo ó un print inmediatamente lo envia al navegador procesando asi todo tu script PHP. Pero con output buffering activado todo el codigo generado es guardado en una variable  hasta que todo el script PHP es leido y solo hasta después es enviado al navegador como una sola pieza.

Una ventaja de usar output buffering es que disminuye la cantidad de tiempo que toma mostrar una pagina por que no es enviada en pedazos.

Para ver un ejemplo sencillo de su uso, puedes visitar el siguiente link de Brian Cray donde tiene unos ejemplos muy buenos y mucha mas información sobre su uso.

Link : http://web.archive.org/web/20101216035343/http://dev-tips.com/featured/output-buffering-for-web-developers-a-beginners-guide

PHP manual : http://php.net/manual/en/function.ob-start.php




No hay comentarios:

Publicar un comentario