Tach!
wie im Titel schon geschrieben, seid ihr damit nun zufrieden?
Natürlich nicht. Aber auf uns kommt es nicht an, du musst mit deiner Arbeit zufrieden sein. Es ist jedenfalls schön, dass du noch da bist und unsere Meinung hören möchtest.
$uri = rtrim(dirname(htmlspecialchars($_SERVER["PHP_SELF"])), "/\");
htmlspecialchars() hat hier nichts zu suchen. Das ist was für die Ausgabe und an der Stelle ist erst Eingabe.
header('Location: http://$host$uri/login');
Der Location-Header ist nicht HTML sondern HTTP. Dafür gelten andere Maskierregeln als für HTML und eine Behandlung nach HTML-Regeln für PHP_SELF ist hier nicht sinvoll.
Neulich sprachen wir noch darüber (das warst doch du?) dass man seine Scripts wenigstens nach dem EVA-Prinzip aufbauen sollte. Dann kommt man nicht in Versuchung, bereits am Anfang für eine spätere Ausgabe irgendwelche Kontextbehandlung einzubauen, die dann am Ende vielleicht falsch ist und einem beim V-Teil (Verarbeitung) im Weg steht.
Für deine privaten Zwecke mag außerdem PHP_SELF ausreichend sein. In der bösen Welt draußen kann es sich als ungeeignet erweisen. SCRIPT_NAME oder REQUEST_URI sind Alternativen. Da ich mir das immer nicht merken kann, was in welcher Server-Variablen steht, probier ich das immer mit den diversen Anhängseln aus und nehm dann das was ich grad brauch. Also phpinfo(INFO_VARIABLES)
; anschauen und die Seite so aufrufen: .../index.php
(der einfachte Fall), .../index.php/pathinfo
, ...index.php?querystring
und .../index.php/pathinfo?querystring
.
dedlfix.