Stefan: (?) Cannot add header information - headers already sent...

Hallo,

bin gerade am testen meiner neuen Seite http://plagge.vol4u.de/artikel/ie.php (nur der "JavaScript"-Link ist tatsächlich verlinkt!).

Verwendet man nun den Link "JavaScript", so wird "javascript.php" geladen, welche eine "Unterdatei" included (in den rechten Bereich) - diese hat den Namen "art_jav.php".

<?php
include("art_jav.php")
?>

Wenn die Seite geladen ist, sieht man dann die Fehlermeldungen (welche nebenbei noch das Layout auseinanderzwirbeln.

Die untere Fehlermeldung auf der Seite tritt auf, weil ich folgenden Code am Ende von "javascript3.php" habe:

<?php
if ($_SERVER['PHP_SELF'] != "javascript3.php") header("location: javascript3.php");
?>

Dieser Code soll dafür gedacht sein, dass das Grundgerüst (in diesem Fall die "javascript.php") nachgeladen wird, sobald die Datei "javascript3.php" von einer Suchmaschine aus aufgerufen wird.

Könnte mir vielleicht jemand einen wirkungsvollen Tipp geben, wie man den Code richtig einsetzt, oder welchen Fehler er enthält?

Vielen Dank im vorraus!!!

Stefan

  1. Ich muß hinzufügen:

    includet wurde folgender Text (Zeile 44 und 45):
    "
    <h1>Testphase - noch keine Dokumente online!</h1>
    wwwdesign.info | v.3 geht in wenigen Tagen online... (und die Umbrüche)
    "
    ---------------------------------------------

    Der Fehler den ich meine ist (wenn man Link "JavaScript" verwendet hat - bei der Artikelauflistung ganz unten (bei "1. Artikel":

    "
    Warning: Cannot add header information - headers already sent by (output started at /home/www/web5/html/artikel/javascript.php:6) in /home/www/web5/html/artikel/art_jav.php on line 49
    "

    Da die includede Datei ja KEIN HTML-Grundgerüst enthält (die würde ha dann mitten in den <body>-Bereich included), müßte der Befehl

    <?php
    if ($_SERVER['PHP_SELF'] != "javascript3.php") header("location: javascript3.php");
    ?>

    doch eigentlich in Ordnung sein ?

  2. Hi,

    Fehlermeldung auf der Seite tritt auf, weil ich folgenden Code am Ende von "javascript3.php" habe [...]

    zum besseren Verständnis der Funktion header() könntest Du mal einen Blick in die Doku werfen: http://de2.php.net/manual/de/function.header.php. Dort liest Du unter anderem: "Beachten Sie, dass header() aufgerufen werden muss, bevor eine Ausgabe gesendet wurde, egal ob normale HTML Tags, leere Zeilen in einer Datei oder von PHP. Ein weit verbreiteter Fehler ist mittels include(), require(), oder anderen Dateizugriffsmethoden Code zu lesen, und so unbewusst Leerzeichen oder Leerzeilen auszugeben, bevor header() aufgerufen wird. Das gleiche Problem besteht auch bei Verwendung einer einzigen PHP/HTML Datei."

    Wenn Du erkannt hast, wie diese Funktion arbeitet, kannst Du auch beurteilen, ob und wie Sie für Dein Problem zu nutzen ist.

    HTH Robert

  3. Hi,

    <?php
    if ($_SERVER['PHP_SELF'] != "javascript3.php") header("location: javascript3.php");
    ?>

    Location-header erfordern in http immer noch absolute URLs.

    Könnte mir vielleicht jemand einen wirkungsvollen Tipp geben, wie man den Code richtig einsetzt,

    Der Fehler liegt irgendwo vorher, weil dort schon eine Ausgabe (Leerzeile, Leerzeichen, was auch immer) stattfindet, die implizit dazu führt, daß PHP den header und diese Ausgabe abschickt. Und wenn die erste Ausgabe erstmal unterwegs ist, ist es zu spät für weitere header-Angaben.

    oder welchen Fehler er enthält?

    s.o., URL muß absolut sein.

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/