Sönke Tesch: warnmeldungen vom server

Beitrag lesen

Habe sie gerade auf den Server des Kunden gelegt und bekomme nun folgende Fehlermeldungen:

Warning: Cannot send session cookie - headers already sent by (output started at /httpd/www.domain.de/test/login.php:3) in /httpd/www.domain.de/test/login.php on line 39

Was heisst das und was kann ich machen damits läuft?

Auch wenn http://selfsuche.teamone.de/ momentan wieder schlechte Laune hat, könntest Du kurzerhand bei Google nachschauen.

Aber sei's drum: Eine HTTP-Antwort besteht aus zwei Teilen: Dem Kopf und _nachfolgend_ den eigentlich abgerufenen Daten. Im Kopf werden Zusatzinformationen zu den Daten gesendet, zum Beispiel Datentyp und -länge, aber auch Cookies. Da der Kopf _vor_ den Daten kommt, können keine Cookies mehr gesendet werden, sobald Du beginnst, aus Deinem Skript heraus die Seitendaten zu senden. Zu den Seitendaten gehört ausdrücklich jedes einzelne Byte, auch Leerzeichen oder die (von vielen übersehenen) Zeilenschaltungen.
Genau diesen Umstand teilt PHP Dir mit obiger Meldung mit: "headers already sent", "Kopfdaten bereits gesendet".

Du hast zwei Möglichkeiten: Entweder Du platzierst Deine setcookie()- und/oder header()-Anweisungen _vor_ jeglichen Ausgaben; das ist aber manchmal sehr umständlich. Die Alternative ist, auf dem Server den Ausgabepuffer von PHP einzuschalten, so wie es bei Dir wahrscheinlich der Fall ist. In dem Puffer können die Daten gesammelt und sortiert werden, bevor sie an den Browser gehen.
Wie man den Puffer einschaltet sollte in der PHP-Anleitung stehen, Kapitel Konfiguration, Stichwort "output buffering".

Gruß,
  soenk.e