Jan Ellers: Cannot Modify Header Information

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

  1. 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

  2. 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

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. header("Location: gbook.php");
      Du musst einen absoluten Pfad angeben.

      Relative Pfadangabe sind auch möglich...

      Gruß
      Daniel

      1. 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

      2. 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

        --
        Es gibt Dinge, die sind sooo falsch, dass nicht einmal das Gegenteil stimmt.
    2. 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

      1. 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

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
  3. 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

    --
    "Love your nation - respect the others."
  4. 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

    1. Tausend dank, das hat geholfen!