2011-01-20 8 views
6

Uso el mismo script php para incluyendo y para ajax cargando. Se trata de algunos elementos de catálogo aleatorios que se cargan con la página y se pueden cargar con ajax. Necesito usar la función header() solo si está cargada a través de ajax.PHP: ¿cómo saber si la salida ya comenzó?

Cuando uso la función de encabezado y la salida ya se inició recibo una advertencia de php al respecto. ¿Cómo sabe php que la producción ya comenzó? ¿Cuál es la mejor manera de determinar eso y no llamar a la función de encabezado?

Gracias.

Respuesta

9

http://php.net/manual/en/function.headers-sent.php

// If no headers are sent, send one 
if (!headers_sent()) { 
    header('...'); 
    exit; 
} 
+0

¡Muchas gracias! Justo lo que necesitaba. Y, por cierto, ¿por qué salir? – SaltLake

+1

El uso de exit es directo del manual de PHP al que se hace referencia para una llamada 'header: Location' que lo requiere. En tu caso no deberías agregarlo, o romperás la salida. – tomwalsham

+0

Sí, lo he copiado directamente del manual y me olvidé de eliminarlo :) – Jake

4

Hay un fácil incorporado para que:

if (!headers_sent()) { 
    header('Your header here'); 
} 

No hay mucho más que añadir :)

0

Basta con retirar la línea de vacío antes de las aperturas de código y añadir la salida; después de que finalice su salida.

+0

No hay ningún código en la pregunta: ¿cómo se sabe qué hay y qué no? La mayoría de las respuestas actuales sugieren usar 'headers_sent()' - ¿hay alguna razón por la cual su sugerencia sea mejor? – andrewsi

Cuestiones relacionadas