Verstehen der PHP-header()
Wo benutzen Sie den Befehl header()?
Habe ich den folgenden code an handlers/handle_login.php. Der Benutzer gegangen ist, um die Website von index.php
das ist der Ausgangspunkt.
if(!$logged_in){
header("Location: index.php");
die("You are not logged_in");
}
Wenn die if-Klausel wahr ist, bekomme ich einen 404-Fehler, da der header bringt mich zu handlers/index.php
statt index.php
.
- Funktioniert Ihr code machen eine andere Ausgabe, bevor der header () - Aufruf? wenn ja, beschreiben Sie es.
- Danke für Eure Antworten!
- Aus meinen tests, PHP nicht angezeigt, ändern Sie den Wert für die
Location
header, bevor es an den client gesendet. Der browser ist entweder der Interpretation des aktuellen Kontextes zuhandlers/
oder Ihre Umgebung hat einige tolleLocation
- header-übersetzung ist, dass ich teilweise brauche, weil ich krank bin der Erarbeitung von Möglichkeiten, um dynamisch erstellen Sie absolute URIs.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Während ich Stimme mit nilamo und earl, ich hoffe, ich kann ein größeres Bild:
Verwendung relativer Pfade können sehr merkwürdige Effekte, je nachdem, wo der browser
"denkt" es ist in Ihre Website-Hierarchie. Nehmen wir beispielsweise an, die Website hat eine index-Datei '/index.php " aber die konfiguriert ist zu akzeptieren, Modul und action in der URI-Pfad. Sie können sehr gut haben eine url, die folgendermaßen aussieht:
Aus dieser situation, die einen header wie:
sehr gut, dass der browser versuchen
das ist natürlich nicht das, was Sie wollen. Aus diesem Grund ist es in der Regel besser für die Verwendung von '/index.php' wie oben empfohlen, oder noch besser, verwenden Sie den vollständig qualifizierten URL, wenn möglich.
Hoffe, das hilft.
Legen Sie den Speicherort, um die vollständige URL der index.php nicht nur den Dateinamen. Nach php.net dies ist der richtige Weg, es zu tun, nicht relative Pfade verwenden. Hier ist ein Beispiel:
http://localhost/index.php
funktioniert ähnlich wie Ihre url.Versuchen mit '/':
Ohne slash, es wird davon ausgegangen, dass Sie sich auf etwas bezieht, im aktuellen Verzeichnis. Durch kleben, dass slash an der front, Sie sind ausdrücklich bezogen auf die Datei in das Stammverzeichnis der Website. Da die Seite 'index.php' Sie könnte genauso gut verwenden Sie die "header('Location: /')".