Ich hatte tatsächlich einen ähnlichen Fall, in dem ich eine Admin-Seite hatte, die oben auf allen meinen anderen Seiten enthalten war. Am Anfang jeder Seite unter der Zeile:
%Vor%
Ich hätte die PHP-Logik:
%Vor%
Das Problem dabei war, dass ich anderswo auch header(...
aufgerufen / manipuliert habe. Nachdem ich viel Zeit mit meinem Code verbracht habe, gebe ich zu, dass ich nicht herausfinden konnte, wo das Problem lag. Dann dachte ich, dass jede dieser Dateien meine admin.php
Datei trifft, bevor Sie etwas anderes tun. Also habe ich darüber nachgedacht, was passieren würde, wenn ich die Logik, die oben in jeder meiner Ansichten stand (weil ich nichts sehen wollte, wenn du nicht eingeloggt bist), in meine admin.php
-Datei steckst?
Was passierte, war, dass, bevor es in meinen Ansichten überhaupt zu einem php / html kam, es auswertete, ob jemand eingeloggt war ( $_SESSION['username'])
) und wenn es NULL
war, dann wurde ich einfach auf die adminLogin Seite weitergeleitet . Ich habe diese Logik direkt vor meinen Schalter gestellt und es hat perfekt für alle meine Dateien funktioniert, die einmal die Logik erforderten. Die Art und Weise, wie ich in der Entwicklung gearbeitet habe, hat aber viele Probleme in der Produktion aufgeworfen. Ich habe festgestellt, dass das Verschieben der Umleitungslogik in meine admin.php
-Datei nicht nur die doppelte header(...
-Manipulation vermieden hat, sondern meinen Code effizienter gemacht hat, indem die überflüssige Logik aus meinen View-Dateien und in meine admin.php
-Datei entfernt wurde.
Anstatt die Logik in jede Ansichtsdatei zu schreiben, legen Sie sie einmal in Ihren Controller, bevor Sie umschalten. Klappt wunderbar! Dies ist nützlich, wenn Sie nicht möchten, dass jemand auf die sensiblen Ansichten zugreift, es sei denn, sie melden sich an. In meinem Fall war dies für mein CMS wichtig. Wenn jedoch einige Dateien angezeigt werden sollen, ohne dass sie sich anmelden müssen, ist die ursprüngliche Logik wahrscheinlich ausreichend. Es sieht so aus, als ob Sie bereits eine Lösung gefunden haben, aber hoffentlich kann dies hilfreich sein, wenn Sie diesen Fehler erneut haben. :)