Weiterleitung auf eine andere Seite mit PHP -> Probleme?
Hi, ich habe auf meiner Website Account Dashboard eingerichtet, und wenn man auf Logout drückt, wird man ausgeloggt. Dabei habe ich nur ein Problem:
Bevor man sich ausloggen kann steht folgendes als URL im Browser:
mypage.com/account/dashboard.php#logout
So muss ich das leider lösen und kann es auch nicht ändenr :(
Mein Problem jetzt:
Wenn man auf Logout drückt, wird man ausgeloggt und zwar per PHP Skript logout.php
Am Ende des Skriptes steht header("Location: ../");
Damit kommt man auf die Startseite, also index.html. Nur das Problem, die Sprungmarke wird übernommen und da steht dann als URL oben:
mypage.com#logout
Wie schaffe ich es mit dieser Header Funktion, dass die Sprungmarke nicht übernommen wird, sondern einfach auf die index seite weitergeleitet wird.
Ich habe es auch schon so probiert:
header("Location: mypage.com");
Die Sprungmarke wurde trotzdem übernommen...
Hat jemand eine Idee oder Lösung?
3 Antworten
Du müsstest mit JavaScript die Browser History manipulieren, um den Fragment Identifier mitsamt Hash zu entfernen.
<a href="logout.php" id="logout">Logout</a>
<script>
document.getElementById("logout").addEventListener("click", e => {
const url = location.pathname + location.search;
history.replaceState({}, document.title, url);
});
</script>
Wenn du nicht möchtest, dass der aktuelle History-Eintrag überschrieben wird, verwende stattdessen pushState.
Alternativen dazu wäre das Überschreiben von location.hash (JavaScript):
location.hash = "";
oder ein Überschreiben in der header-Funktion:
header('Location: index.php#');
Doch in diesen beiden Fällen würde der Hash jedesmal mit an der URL hängen bleiben.
Danke :) ich denke ich werde das machen, was du als letztes vorgeschlagen hast, indem ich es per header Funktion überschreibe, dann steht halt am Ende ein # aber ja besser als das andere :D
Anker sind lokal. Die bekommst du mit PHP nicht einfach so weg. Du kannst versuchen auf die absolute URL zu leiten, damit das weg geht, mehr aber auch nicht. Anker sind nur lokal, PHP aber Serverseitig
z.b. directen pfad nehmen , also mit domain
Hab ich ja versucht hat nicht funktioniert… steht ja in meiner Frage. (Wenn ich deine Antwort jetzt richtig verstanden habe) :)