Hannes: PHP Weiterleitung

Beitrag lesen

Tach,

$uri = rtrim(dirname(htmlspecialchars($_SERVER["PHP_SELF"])), "/\");

header("Location: http://$host$uri/$extra");

Zu mir wurde gesagt das "rtrim(dirname(htmlspecialchars" kann komplett weg, dieses ist in einer URL nicht wichtig

htmlspecialchars() bereitet Text so auf, dass es in HTML-Code keinen Ärger mit den HTML-Sonderzeichen <, >, & und Anführungszeichen gibt. Du verwendest $uri aber nicht HTML-, sondern HTTP-seitig. htmlspecialchars() ist hier fehl am Platze.

Der Rückstrich, den du mit rtrim() entfernen möchtest, hat in URLs nichts zu suchen, das ist eine DOS/Windows-Angelegenheit. Falls du das Skript allerdings auf einem Windows-System ausführst, könnte es sein, dass du sämtliche Rückstriche durch Schrägstriche ersetzen musst. Das funktioniert mit rtrim() natürlich nicht. Weiterhin ist es unnötig, den letzten Schrägstrich zu entfernen, weil du ihn bei header(... $uri/$extra) eh wieder einfügst. rtrim() ist also überflüssig, falls überhaupt, bräuchtest du strtr(), aber nur unter Windows.

dirname() brauchst du trotzdem in diesem Zusammenhang, denn du möchtest anscheinend nicht auf das Skript weiterleiten, sondern wo immer $extra hinzeigt.

Außerdem wurde gesagt eine header-Weiterleitung benötigt eine absolute URL, ist dieses so richtig, wie ich es oben geschrieben habe?

Falls du der Meinung bist, damit eine absolute Adresse gebastelt zu haben: Ja. (Falls du nicht weisst, was eine absolute Adresse ist, solltest du das besser selbst nachschlagen. Sowas ist Grundwissen.)