2010-06-24 5 views
10

Der Titel ist selbsterklärend.Wie funktionieren Header in PHP mit der Ausgabepufferung?

Ich habe ein gutes Stück Erfahrung mit PHP, aber ich bin mir nicht sicher, wie die header Funktion zwischen ob_start() und arbeitet.

Bedenken Sie:

ob_start(); 

echo "Some content"; 
header('X-Example-Header: foo'); 
echo "Some more content"; 

$output = ob_get_contents(); 
ob_end_clean(); 

echo $output; 

Ist die header Funktion, um die Ausgabe-Pufferung ignorieren, und damit alle Header, bevor der Inhalt geschickt, weil es echo ed nach dem header Anruf?

Oder funktioniert es anders?

+1

* (Referenz) * ['ob_start'] (http://de2.php.net/manual/en/function.ob-start.php) - Diese Funktion aktiviert die Ausgangspufferung. Während die Ausgabepufferung aktiv ist, wird keine Ausgabe von dem Skript ** (außer den Headern) ** gesendet, stattdessen wird die Ausgabe in einem internen Puffer gespeichert. – Gordon

+0

Oh, hey, das habe ich vermisst. Das sollte mich lehren, etwas näher zu lesen. Danke, Gordon. –

Antwort

14

Die header() ignoriert tatsächlich die Pufferung der Ausgabe. Ein Teil der Gründe für die Verwendung der Ausgabepufferung besteht darin, dass Sie HTTP-Header "out of order" senden können, da die Antwort gepuffert ist. Sie können keine HTTP-Header senden, nachdem Sie eine Ausgabe gesendet haben (es sei denn, diese Ausgabe wird gepuffert).