dedlfix: php header:location

Beitrag lesen

Tach!

Ich erhalte aufgrund einer (ich habe nicht den blassen Schimmer - warum - und von wem) ins "../-Verzeichnis" geworfenen index.php einen geloggten Fatal Error. Diese Datei hätte aber nie aufgerufen werden dürfen, da deren Aurfuf aus einem "header("Location: index.php");" resultiert, das eine Verz.-Ebene darunter notiert ist.

Es kommt nicht darauf an, wie die Datei-Struktur am Server ist. Der Browser kann zwar einen relativen Redirect empfangen, aber er bezieht ihn nicht auf die Datei, in der er steht, denn davon hat er keine Ahnung. Stattdessen bezieht er ihn auf seine aktuelle URL, für die die Response ein Redirect ist. Er kann nämlich keine relativen Requests stellen, weil ein Server wiederum keine Ahnung hat, wo sich der Client gerade befindet, und ob sich der Request überhaupt aus einer URL in einer Webseite ergibt oder aus einer eingetippten Adresse oder einem Bookmark.

Wenn du beispielsweise eine URL aufgerufen bekommst, die zu einer Datei führt, und darin befindet sich ein include/require(_once) einer Datei in einem anderen Pfad, und da wiederum ist der Redirect drin, dann bezieht das der Browser nicht auf die inkludierte Datei - weil er es nicht kann - sondern auf die URL des Requests.

Wie kann/soll ich mir das erklären?

Es kann sich nur um eine Unstimmigkeit bei den tatsächlichen und angenommenen URLs handeln. Zur Not müsstest du die angeforderte URL mitloggen, damit du im Fehlerfall weißt, was der Client angefordert hat.

dedlfix.