Hallo!
Ich habe ein Loginscript welches
a) aus dem Formular zum eingeben der Userdaten,
b) aus der login.php wo die sessionvariablen gesetzt werden,
c) einer checkuser.php welche ich in alle seite includiere die nicht öffentlich sind, und
d) einer logout-datei in welcher die session zerstört wird.
Doch leider ist es mir möglich, nach erfolgreichem LOGOUT über die "zurück"-Schaltfläche des Browsers auf interne Seiten zu gelangen, die nur ersichtlich sein sollen, wenn man eingeloggt ist.
Ich kann den Fehler nirgends finden, seht ihr mehr als ich?
Login.php
PHP-Code:
<?php
// Session starten
session_start ();
// Datenbankverbindung aufbauen
include("sql-connect.php");
$sql = "SELECT Id, Nickname, Nachname, Vorname FROM benutzerdaten WHERE (Nickname = '".mysql_real_escape_string($_POST["name"])."') AND (Kennwort = '".md5(mysql_real_escape_string($_POST["pwd"]))."')";
$result = mysql_query ($sql);
if (mysql_num_rows ($result) > 0)
{
// Benutzerdaten in ein Array auslesen.
$data = mysql_fetch_array ($result);
// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["Id"];
$_SESSION["user_nickname"] = $data["Nickname"];
$_SESSION["user_nachname"] = $data["Nachname"];
$_SESSION["user_vorname"] = $data["Vorname"];
echo "<meta http-equiv=\"refresh\" content=\"0; url=./index.php?topic=".base64_encode(intern)."\">";
}
else
{
echo "<meta http-equiv=\"refresh\" content=\"0; url=./index.php?topic=".base64_encode(fehler)."\">";
}
?>
Logout.php
PHP-Code:
<?php
include("checkuser.php");
// Wird ausgeführt um mit der Ausgabe des Headers zu warten.
ob_start ();
session_start ();
session_unset ();
session_destroy ();
unset($_SESSION["user_id"]);
echo "<meta http-equiv=\"refresh\" content=\"0; url=./index.php?topic=".base64_encode(start)."\">";
ob_end_flush ();
?>
checkuser.php
PHP-Code:
<?php
session_start ();
if (!isset ($_SESSION["user_id"]) )
{
echo "<meta http-equiv=\"refresh\" content=\"10; url=./index.php?topic=".base64_encode(start)."\">";
}
?>
Ich hoffe mir wird nicht wieder Faulheit nachgesagt, ich zerbrech mir schon den ganzen Tag den Kopf darüber. (Nich böse gemeint, lieber Mod)
Gruß, David.