Cannot Modify Header Information
Jan Ellers
- php
0 MiSo0 Hopsel0 Daniel P.0 Wilhelm Turtschan0 Hopsel
0 Sven Rautenberg0 Daniel P.
Hallo,
Ich habe eine kleine Homepage mit Adminbereich, Gästebuch und anderen kleinen selbstgemacht PHP Spielereien gebastelt. In meiner Entwicklungsumgebung auf meinem kleinen Homeserver mit Win2k3 Server, IIS6 hat auch alles toll funktioniert. Nun habe ich die Page in die Produktivumgebung geschaufelt, dort funktioniert auch alles bis auf eines: Das forewarding.
Beispiel Gästebuch. Die Formularangaben werden an eine PHP Datei gesendet die die Daten in die Datenbank schießt und dann wieder aufs Gästebuch zurückleitet.
Das geschieht ganz einfach mit:
"
header("Location: gbook.php");
exit;
"
Da bekomm ich aber nun den PHP-Fehler "Cannot modify Header information". Nun habe ich auch schon den ganzen vormittag gegoogelt und es wurde in zahlreichen Foren ja darauf aufmerksam gemacht das vorher keine Informationen an den Header geschickt werden dürfen. Das geschah bei der ein oder anderen Datei vielleicht, aber diese haben in der entwicklungsumgebung trotzdem funktioniert, des weiteren gibt es auch genug dateien die keine Infos an den Header senden bevor header() aufgerufen wird und der Fehler tritt trotzdem auf. Nun das beste, der Fehler tritt auch bei folgendem Code auf:
<?php header("Location: home.html");exit;?>
Es ist auch egal ob ich eine statische URL angebe, die dieses objekt angeblich verlangt. Es funktioniert auch nichts wenn ich folgendes mache:
echo "<meta http-equiv=refresh content=5; URL=http://www.google,de>";
Hier die phpinfo() falls die interessant ist:
http://janellers.de/info.php
gruß und schon mal vielen dank,
Jan
Die Fehlermeldung kommt dann, wenn du versuchst den Header zu modifizieren, nachdem du was geschrieben hast. Der Header kommt logischerweise VOR dem body.
Wenn du den Benutzer umleiten willst, machs mit
echo "<script type="text/javascript">window.location=irgendwas.php</script>"
mfg
Micha
Hi Jan!
header("Location: gbook.php");
Du musst einen absoluten Pfad angeben.
Es funktioniert auch nichts wenn ich folgendes mache:
echo "<meta http-equiv=refresh content=5; URL=http://www.google,de>";
Was sollte denn deiner Meinung nach passieren? Hast du fünf Minuten gewartet?
MfG H☼psel
header("Location: gbook.php");
Du musst einen absoluten Pfad angeben.
Relative Pfadangabe sind auch möglich...
Gruß
Daniel
Hallo,
header("Location: gbook.php");
Du musst einen absoluten Pfad angeben.
Relative Pfadangabe sind auch möglich...
Möglich ist alles, es muss dann aber nicht funktionieren.
Siehe auch hier.
viele Grüße
Axel
Hallo,
header("Location: gbook.php");
Du musst einen absoluten Pfad angeben.
Relative Pfadangabe sind auch möglich...
möglich schon, natürlich - aber nicht erlaubt.
Die entsprechende Stelle der HTTP-Spec hat Axel ja schon rausgesucht.
Ciao,
Martin
habe d'ehre Hopsel
echo "<meta http-equiv=refresh content=5; URL=http://www.google,de>";
Was sollte denn deiner Meinung nach passieren? Hast du fünf Minuten gewartet?
Wo steht hier was von 5 Minuten?
Weiterleitung Dich
man liest sich
Wilhelm
Hi Wilhelm!
Wo steht hier was von 5 Minuten?
Dabei ist es doch gar nicht mehr so warm. Oh, die Männer kommen; ich muss Schluss machen.
MfG H☼psel
Moin!
Da bekomm ich aber nun den PHP-Fehler "Cannot modify Header information".
Die Fehlermeldung sagt üblicherweise auch, in welcher Datei und Zeile die verhindernde Ausgabe gemacht wurde. Bei dir nicht?
- Sven Rautenberg
Da gibt es einen kleinen Trick, um das ungewollte Senden von Informationen zu verhindern: Schreibe am Anfang deines Scripts "ob_start()" und am Ende "ob_end_flush()". Mit diesen Befehlen (genaueres findest du in der PHP-Doku) kannst du die Ausgabe de- bzw. aktivieren. Keine Ausgabe = ungehinderte Modifizierung des Headers ;-)
HTH
Tausend dank, das hat geholfen!