Olli: Probleme mit Login

Hallo und Guten Abend,

ich habe da mal ein Problem, an dem ich fast am verzweifeln bin. Ich bin dabei eine Seite zu schreiben mit Userlogin. Zur Zeit erst mal local auf meinem Rechner.
Also ich habe eine index.php Seite. Über ein Menü kommt man auf eine Login.php Seite. Wenn ich mich dann darüber einlogge klappt alles prima. Jetzt möchte ich das login aber über css auf der index.php Seite unterbringen. Das klappt auch soweit, aber wenn ich mich jetzt versuche anzumelden kommt immer die Fehlermeldung
"Warning: Cannot modify header information - headers already sent by (output started at d:\homepage\includes\kopf.inc.php:5) in d:\homepage\usermanagment.inc.php on line 79

In Zeile 5 der kopf.inc.php steht <?php print"".TITEL.""?>
In Zeile 79 der usermanagement.inc.php steht header ("Location: http://".$_SERVER['SERVER_NAME']."/main.php");

Ich weiss, dass die Meldung sagt, dass schon irgendwas uebergeben wurde, und dass nirgends eine Ausgabe vor weg gehen darf. Aber mit dem login.php geht es doch auch.
Ich habe mir die Dateien auch mehrmals angeschaut, aber ich finde keinen Fehler. Vielleicht sehe ich auch einfach den Wald vor lauter Bäumen nicht mehr. Falls einer eine Idee hat, oder noch mehr Informationen braucht. Ich freue mich auf jede Antwort.

Gruss
Oliver

  1. Heyho!

    Wie du bereits richtig erkannt hast, kannst du einen Header nur dann senden, wenn vorher nicht, aber auch _garnichts_ gesendet wurde. Kein Leerzeichen, garnichts.

    Wenn du die Datei includest, dann gilt das auch für Sachen die _vor_ dem Include ausgegeben wurden.

    Anders gesagt: Wenn du etwas auf deiner Index.php ausgibst und wenig später die Login.php includest, die wiederrum einen Header sendet, klappt das nicht, weil ja bereits weiter oben etwas gesendet wurde. Zwar nur in der Index.php, aber bei einem Include gehören diese Seiten ja automatisch zusammen, vereinfacht gesagt.

    Prüfe also, an welchen Stellen über deinem header()-Befehl etwas ausgegeben wurde.

    Die Ausgabe muss übrigens nicht zwingend per PHP erfolgen.
    Folgendes wäre auch unzulässig:

    Hallo Welt!
    <?php header("Location: ..."); ?>

    Du hast hier zwar nicht per PHP etwas ausgegeben, dennoch wurden Daten (= "Hallo Welt!") an den Browser geschickt.

    Gruß

    Mastershrimp

    1. Da ich meinen Fehler nicht gefunden habe,
      habe leite ich jetzt per java script auf die Seite um.
      <script language="JavaScript">    window.setTimeout('window.location.href="/main.php"','0')
      </script>
      Nicht schön, aber es klappt erst mal.
      Vielleicht finde ich ja noch meinen Fehler.
      Gruss
      Olli