Hi,
ich hab hier ein kleines Problem mit Sessions. Das Anlegen und so klappt, nur leider funktioniert der Logout Button nicht. Die Session bleibt trotzdem bestehen und wenn ich dann auf ne geschützte Seite gehe, lässt er mich auch rauf, obwohl ich eigentlich erst das Login Formular angezeigt bekommen sollte.
Hier ist n bischen Quellcode, vielleicht fällt jemanden ja was auf:
login.php
<?php $_SESSION['userName'] = "";?>
<?
function authenticate() {
header("WWW-Authenticate: Basic realm="BeraterNet WWW Authenticate"");
header("HTTP/1.0 401 Unauthorized");
print("Du musst eine gültige Kennung besitzen um Zugriff auf diese Seiten zu haben.\n");
exit;
}
if(!isset($PHP_AUTH_USER)){ authenticate(); }
else {
$c=mysql_pconnect("localhost","root","********");
mysql_select_db("beraternet",$c);
$q=sprintf("SELECT * FROM user WHERE username='%s' AND passwort='%s'", $PHP_AUTH_USER,$PHP_AUTH_PW,$REMOTE_ADDR);
$q=mysql_query($q) or die(mysql_error());
$row_q = mysql_fetch_assoc($q);
if(mysql_num_rows($q)==0){ authenticate(); }
}
session_start();
session_register("userName, userPersID, userLevel");
$_SESSION['userName'] = $PHP_AUTH_USER;
$_SESSION['userPersID'] = $row_q['u_id'];
$_SESSION['userLevel'] = $row_q['u_level'];
?>
//hier kommt dann der weiterleitungskrams...
Auf jeder Seite ist die Datei check_session.php includet, also werden die Sessions überprüft.
check_session.php
<?php
session_start();
session_register("userName, userLevel, userPersID");
if ($_SESSION['userName'] == "" && $_SESSION['userPersID'] == "" && $_SESSION['userLevel'] == "")
{
header("HTTP/1.0 401 Unauthorized");
header("Location: login.php");
}
else
{
$username = $_SESSION['userName'];
$userid = $_SESSION['userPersID'];
$userlevel = $_SESSION['userLevel'];
}
?>
Soweit so gut, wenn ich n echo $_SESSION['userName'] mache zeigt er den auch an.
Und hier nun die logout.php
logout.php
<?php
session_start();
session_unregister ("userName, userPersID, userLevel");
session_unset();
session_destroy();
header("HTTP/1.0 401 Unauthorized");
header("location: goodbye.php");
echo "Erfolgreich ausgeloggt!!";
?>
Dann soll er auf ne andere Seite gehen auf der dann ein Link auf die login.php ist. Wenn ich auf diesen Link klicke dann logt er sich mit den alten Benutzerdaten wieder ein. Das soll so nicht sein. Man muss dann nochmal das Passwort und den Namen eingeben. Da das nicht der Fall ist vermute ich das die Session noch irgendwo besteht. Oder muss ich den Browser komplett beenden um die Sessiondaten zu löschen.
Vielen Dank für eure Antworten und sorry für die menge an code.
oli