ChrisB: Was macht dieses Stück Code?

Beitrag lesen

Hi,

und  ich weiss auch nicht, in welchen Fällen es sein kann, dass die Header-Daten noch NICHT gesendet worden sind.

Vermutlich in allen, die für dieses Code-Fragment eine Rolle spielen.
Was meinst du damit? Bzw. auf welche Header wird denn getestet?

Auf die HTTP Response Header.

Weil die Header-Funktion ist doch eine PHP-eigene.

Auch ohne, dass du header() benutzt, sendet PHP natuerlich selber HTTP Response Header - sonst muesstest du die ja *alle* in *jedem* Script selber ausloesen.

Damit muss doch festgelegt sein, welche Header geprüft werden, oder?

PHP schickt die HTTP Response Header spaetestens dann raus, wenn die erste "Ausgabe" erfolgt (das kann <html> sein, dass kann ein einzelnes Leerzeichen oder Newline sein, reiner Text, ...) - eben alles, was in den Response Body gehoert.
Deshalb kannst du in solchen Faellen header() dann nicht mehr benuzten [1], weil die Header schon rausgeschickt worden sind, und bekommst eine entsprechende Fehlermeldung - wenn du es eben nicht wie hier vorgemacht, vorher abfragst.

[1] Im Normalfall; output buffering hilft das zu "umgehen", was man aber eigentlich dafuer nie braucht, wenn man einen vernuenftigen Programmierstil (Stichwort: EVA-Prinzip) pflegt.

MfG ChrisB