2010-05-12 8 views
25

Creo que la mayoría de nosotros conoce el infame error "Encabezados ya enviados" en PHP. ¿Puedo verificar de alguna manera si los encabezados ya han sido enviados?Cómo comprobar si los encabezados ya se han enviado en PHP

Sería realmente útil hacerlo, antes de tratar de establecer algunos datos de SESIÓN o similares.

Gracias!

+0

¿Por qué no simplemente * asegúrese de que * no envíe ningún encabezado antes de llamar a esas funciones? –

+3

@Dominic Rodger: ¿Qué pasa si este script está destinado a ser un complemento o extensión, o cualquier otro tipo de script de extensión/inclusión? El código de un tercero podría afectar si ya se enviaron o no los encabezados. –

+0

@Andy - punto justo, gracias! –

Respuesta

36

PHP tiene una función headers_sent() que le permite verificar si los encabezados ya están enviados antes de realizar alguna acción. Así es como podría usar la función en su código:

if(headers_sent()) 
{ //if headers already sent out print some message. 
echo "Please go to yahoo.com"; 
} 
else{ 
//send the user automatically to test.php 
header('Location: http://yahoo.com'); 
exit; 
} 
+0

Entonces no te olvides de 'salir()' después de 'encabezado()'! – nalply

6

Sí, puede usar la función headers_sent.

Comprueba si los encabezados han sido enviados.

No puede agregar más líneas de encabezado usando la función de encabezado() una vez que el bloque de encabezado ya ha sido enviado. Al usar esta función puede al menos evitar recibir mensajes de error relacionados con el encabezado HTTP . Otra opción es usar Output Buffering.

headers_list también pueden ser de interés, lo que devuelve una matriz de todos los encabezados enviados.

Cuestiones relacionadas