[PHP] header probleme

XploSiV1

Well-known member
23 Dezember 2006
251
9
Hallo zusammen...

Ich habe da ein Problem...

Ich bin dabei ein Browsergame zu schreiben, habe da aber ein Problem... Ich habe auf der Seite kader.php ein Formular das die Daten des Spielers an die seite setposi.php sendet... Das funktioniert auch... Alles wird richtig in die Datenbank eingetragen... Mein Problem ist folgendes wenn ich von der Seite setposi.php mit

header("Location: kader.php");

zurück zur kader.php will sagt er mir

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w008c91a/browsergame/bgfm08/setposi.php:6) in /www/htdocs/w008c91a/browsergame/bgfm08/setposi.php on line 37

Woran könnte das liegen... Alle Abfragen etc. sind beendet der Befehl header steht GANZ unten im Script...
 
Fehlermeldung: Cannot modify header information - headers already sent by
Folglich könnte es vielleicht daran liegen, dass bereits Headerdaten gesendet wurden? :ugly:

Sobald irgendeine Ausgabe erfolgt (sei es nur ein Leerzeichen) werden die Header gesendet. Nachträglich kann man sie nicht mehr ändern. Also muss header() verwendet werden BEVOR irgendeine Ausgabe erfolgt. Also vielleicht nicht gerade ganz unten im Script...
 
wunderbar danke...

Ich dachte wenn ich zuerst header() setzte gehen die Daten vielleicht verloren bzw. die Abfragen etc. werden nicht ausgeführt...

Jetzt funktionierts...

Danke :)
 
Ich dachte wenn ich zuerst header() setzte gehen die Daten vielleicht verloren bzw. die Abfragen etc. werden nicht ausgeführt...
Wenn du header() aufrufst, merkt sich PHP die Header-Daten, die du senden willst. Du kannst beliebig die Daten noch ändern und ergänzen, indem du weitere header()-Aufrufe machst.
Sobald die erste Ausgabe erfolgt, muss PHP die zuvor vorbereiteten Header-Daten senden, da der HTTP-Header ja - wie der Name schon sagt - als Kopf stehen muss. Ab diesem Zeitpunkt kannst du keine Header mehr senden, da sie ja schon unterwegs zum Clienten sind.

Am einfachsten ist immer ein Template-System, wo du nur einmal, nämlich am Ende, eine Ausgabe machst. So kannst du während der ganzen Scriptphase header()-Aufrufe machen.

Alternative wäre - die aber das Problem nicht beseitigt -, vor jedem header()-Aufruf mit headers_sent() zu prüfen, ob du noch Header anfügen kannst oder ob der Kopf schon auf die Reise geschickt wurde.