hmm, ist ja nicht so, als wenn das 'headers sent'-problem bisher undiskutiert geblieben wäre
hättest ja mal googlen können!
vor dem location-header darf keine ausgabe erfolgen - wozu auch, man sieht sie eh nicht. in der fehlermeldung ist übrigens erwähnt, wo dein output erfolgt! if-schleifen gibt es nicht.
lösungen:
1. präsentation von logik trennen - die pw-überprüfung kannst du am anfang des scriptes erledigen - output ist nicht notwendig.
die restlichen lösungen spar ich mir, eine wäre das umdrehen des include-prinzips (hast eh keine includes, oder doch?) - output buffering laß ich genauso unerwähnt, ist der dümmste tip, den man in diesem zusammenhang geben kann.