gondor: Cannot modify header information - headers already sent

Hallo!

Ich habe ein Problem bei der Weiterleitung einer Seite:

if ($_REQUEST['save']) {
  include("cont/register.php");
  header("Location: index.php");
  exit();
}

Fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at W:\XAMPP\xampp\htdocs\www.meineseite.de\cont\register.php:1)

Das komische ist, das in der register.php 'nichts' ausgegeben wird.

Selbst bei einer leeren Seite (register.php):

<? ?>

kommt noch die Fehlermeldung.

Woran kann das liegen?

gondor(..)

  1. Hi Gondor,

    diese Fehlermeldung kommt mir bekannt vor: Sie tritt genau dann auf, wenn ich die identische Funktion mehrmals include.
    Check mal dein Script, ob dies auch der Fall ist!

    Auf jeden fall wird der Header in deinem Fall mehrfach ausgegeben, und das geht nicht.

    Schöne Grüße,
    Tobias

    Hallo!

    Ich habe ein Problem bei der Weiterleitung einer Seite:

    if ($_REQUEST['save']) {
      include("cont/register.php");
      header("Location: index.php");
      exit();
    }

    Fehlermeldung:

    Warning: Cannot modify header information - headers already sent by (output started at W:\XAMPP\xampp\htdocs\www.meineseite.de\cont\register.php:1)

    Das komische ist, das in der register.php 'nichts' ausgegeben wird.

    Selbst bei einer leeren Seite (register.php):

    <? ?>

    kommt noch die Fehlermeldung.

    Woran kann das liegen?

    gondor(..)

    1. Hallo Tobias!

      Das Script wird nur einmalig aufgerufen.

      Nur da, und nirgendwo sonst...

      gondor(..)

      1. Hmmm, rätselhaft: Du schreibst aber, dass es bei auskommentierung des includes klappt: Was ist denn in der zu includenden Funktion drin?

        Evtl. noch ein zweiter Header?
        Das würde das Problem nämlich erklären!

        Grüße,
        Tobias

        Hallo Tobias!

        Das Script wird nur einmalig aufgerufen.

        Nur da, und nirgendwo sonst...

        gondor(..)

        1. alles was in der

          include("cont/register.php");

          steht ist:

          <? ?>

          Fehlermeldung kommt trotzdem.

          Hat das evtl. was damit zu tun, dass die Seiten in utf-8 gespeichert sind?

          gondor(..)

          1. <? ?>

            Fehlermeldung kommt trotzdem.

            Hat das evtl. was damit zu tun, dass die Seiten in utf-8 gespeichert sind?

            eigentlich nicht.

            versuch mal nen
            $ rm file.php && touch file.php

            gondor(..)

            Mfg entropie

            --
            Whenever people agree with me I always feel I must be wrong.
              -- Oscar Wilde
          2. Hallo!

            Hat das evtl. was damit zu tun, dass die Seiten in utf-8 gespeichert sind?

            Wenn das File mit einem UTF-8-BOM versehen ist, dann könnte das ein Problem sein. Bin mir aber nicht sicher ob das tatsächlich eine solche Auswirkung hat.

            mfg
              frafu

            1. Wenn das File mit einem UTF-8-BOM versehen ist, dann könnte das ein Problem sein. Bin mir aber nicht sicher ob das tatsächlich eine solche Auswirkung hat.

              Ja, hat es - die BOM steht _vor_ <?php, selbst wenn <?php ganz am Anfang des _sichtbaren_ Inhaltes steht.

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Moin

    <? ?>

    kommt noch die Fehlermeldung.

    Woran kann das liegen?

    vermutlich nen leerzeichen in einer source. Verlass dich nicht auf die errmsg, die kann dich verleiten.

    gondor(..)

    Mfg entropie

    --
    Whenever people agree with me I always feel I must be wrong.
      -- Oscar Wilde
    1. Hi entropie!

      Wenn ich das include auskommentiere funktioniert das...

      Muss doch dann an die Datei liegen, oder?

      Schlussfolgernd, das Leerzeichen muss in der register.php sein.

      Alles schon probiert :-(

      gondor(..)

      1. echo $begrüßung;

        Diese Fehlermeldung wurde schon unzählige Male gesichtet, in Foren gepostet und beantwortet. Und die Ursache ist immer die gleiche. Es erfolgt eine Ausgabe. Das kann durch eine explizite Ausgabeanweisung, eine Fehlermeldung oder Zeichen außerhalb von PHP-Code passieren.

        Wenn ich das include auskommentiere funktioniert das...
        Muss doch dann an die Datei liegen, oder?
        Schlussfolgernd, das Leerzeichen muss in der register.php sein.

        Es gibt auch andere nicht sichtbare Zeichen, wie Zeilenumbrüche. Wenn die inkludierte Datei nur PHP-Code und kein HTML außerhalb des PHP-Codes hat, dann beginne sie mit <?php und lass am Ende das abschließende ?> weg, am Dateiende ist es optional. Dann kann sich da auch kein ungewünschtes Zeichen zwischen ?> und Dateiende einschleichen.

        echo "$verabschiedung $name";

  3. Tach.

    Selbst bei einer leeren Seite (register.php):

    <? ?>

    kommt noch die Fehlermeldung.

    Woran kann das liegen?

    Neben bereits erwähnten Leerzeichen in der register.php fällt mir noch die BOM ein, die bei unicode-codierten Dokumenten zu diesem Fehler führen kann.

    --
    Once is a mistake, twice is jazz.
  4. header("Location: index.php");

    hi,

    also, versuche doch mal: header("location: http://www.deineseite.de/index.php");

    ich weiss das man die ganze url angeben sollte/muss.

    mfg dennisb