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