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