Mit PHP Wechseln auf vorherige Seite verhindern?
Hallo liebe Community :) Ich habe eine kleine Website mit PHP, HTML und CSS gebastelt. Dort muss ich ein Passwort in ein input-Formularfeld vom Typ "password" eingeben um in einen "geheimen" Bereich zu gelangen. Es wird dann das Passwort auf Richtigkeit geprüft und die HTML-Seite per PHP mit echo ausgegeben. Die Seite hat also zwei Stadien: einmal die Eingabe des Passworts und einmal der Part mit dem Inhalt. Nun habe ich einen Abmeldebutton hinzugefügt, der das Passwort auf leer setzt (mit unset()). Blöd ist nur, dass man nun einfach mit dem Zurückbutton wieder in den geschützten Bereich galangen kann. Hat jemand eine Idee, wie man das verhindern kann? Evtl. so, dass beim Drücken des Zurückbuttons ein Seiten-Ladefehler erscheint mit "Dokument erloschen - Das angefragte Dokument ist nicht im Browser-Cache verfügbar." oder so? Gibt es einen PHP-weg dafür? PS.: "Bitte nicht die Antwort, ich solle mit Javascript ein neues Browserfenster öffnen." Vielen Dank im Voraus :D
5 Antworten
Ich speichere alles in einer Session. Wenn die gelöscht ist, wird man von der Seite weggeleitet
Wenn du den geschützten Bereich in eine separate Datei auslagerst (user.php) kannst du das mit einer Weiterleitung lösen:
index.php ("Pseudo-Code")
<?php
session_start();
if (isset($_POST['password']) && $_POST['password'] === "test") {
$_SESSION["login-complete"] = true;
header("location: user.php");
exit;
}
if (isset($_POST['logout'])) {
session_destroy();
$_SESSION = array();
}
?>
<form method="POST" action="index.php">
<input name="password" type="password"/>
<input type="submit" value="login"/>
</form>
user.php
<?php
session_start();
if (!isset($_SESSION["login-complete"])) {
header("location: index.php");
exit;
}
?>
<h1>User Bereich</h1>
<form method="POST" action="index.php">
<input name="logout" type="hidden"/>
<input type="submit" value="logout"/>
</form>
Ich würde dir die Verwendung von einer Session empfehlenhttp://php.net/manual/de/intro.session.php
Dazu müssen beide Dateien PHP-Dateien sein und mit session_start(); anfangen.
Die Login-Seite schützt bzw sperrst du mit
if(isset($_SESSION["LOGGED_IN"]))
{
echo 'Du bist bereits angemeldet';
}
else
{
Dein Login-Skript
if(isset($_POST["passwort"]))
{
$_SESSION["LOGGED_IN"] = true; header("Location angemeldet.php");
} }
Und die andere Datei
if(!isset($_SESSION["LOGGED_IN"]))
{
Wenn nicht angemeldet (das Ausrufezeichen bedeutet "nicht" bzw "false"
header("Location: login.php");
}
else
{
echo 'Du bist angemeldet';
}
Um dich abzumelden erstelle die logout.php wie folgt:
session_start();
session_destroy();
header("Location: login.php");
Mit ner js schleife und localstorage. Du setzt beim anmelden nen wert im ls auf true und fragst mit der schleife den wert ab und leitest um sofern der auf false steht. Beim logout sollte der natürlich auf false gesetzt werden. Ich denke das sollte funktionieren
oh ich korrigiere: mit kuechentigers antwort also mit den headern könnte es wohl doch gehen. das ist mir so spontan vorher garnicht eingefallen.
du rufst ne seite aus dem cache auf. mit php wirst du nicht weit kommen bei der problematik. es sei denn mit ajax requests (steckt aber auch wieder js mit drinnen) aber die kosten dich vergleichsweise unnötig viel ressourcen als Serverbetreiber
Geht es auch ohne js? Ich hab von js nicht so viel Ahnung. XD