Der Martin: header location will nicht...

Beitrag lesen

Hallo,

Den Zeilenumbruch am Ende entfernen? Oder am besten das ?> weglassen, das braucht man am Dateiende nicht und dann kann sich da auch kein Whitespace dahinterschleichen.

Oh. Ich wußte, dass header location wählerisch ist.

das ist grundsätzlich so: Sobald das erste Zeichen der Nutzdaten an den Client gesendet wird (dazu gehören auch Leerzeilen oder Blanks am Scriptanfang, sogar eine BOM am Dateianfang), sendet PHP auch die HTTP-Header. Danach können keine weiteren Header mehr gesendet werden, entsprechende Versuche werden mit einer Notice quittiert, aber ansonsten ignoriert.

Das betrifft auch nicht nur den Location-Header - es betrifft alle Funktionen, die direkt oder indirekt einen HTTP-Header erzeugen. Also außer der Funktion header() beispielsweise auch setcookie() oder session_start().

Wenn man meint, man müsse dieses Prinzip unbedingt aushebeln, kann man Output Buffering verwenden. Dann wird die Ausgabe zurückgehalten, bis sie vollständig ist, und man kann jederzeit im Script noch weitere HTTP-Header erzeugen.
Ich halte das aber nicht für ein sauberes Vorgehen und würde es nicht empfehlen.

So long,
 Martin