Hi,
ich habe folgendes Problem:
1. Ich ermittle die session_id() und speicher diese in der Variable $session ab. Gleichzeitig wird die SESSION-ID beim Login in der Datenbank abgepseichert.
2. Mein Script überprüft bei jedem Reload (alle 30 Sekunden), ob die abgespeicherte Session-ID mit der ermittelten ($session=) session_id() übereinstimmt. Wenn nicht, wird auf die logout.php weitergeleitet mittels header("location: ./logout.php");
index.php
logout.php
Wenn ich nun mit Firefox eingeloggt bin und dann mit dem IE mich einlogge, stimmen die Session-IDs ja nicht überein und man müsste automatisch ausgeloggt werden, ABER der Firefox gibt nur ne Fehlermeldung aus, dass die Seite nicht geladen werden konnte, weil anscheinend Cookies nicht aktiv sind, blablabla!
Umgekehrt, falls ich erst mit dem IE drinne war und dann mit dem Firefox mich einlogge, reloaded der IE, gibt aber als reloadete Seite einfach ne 404-Seite aus: Seite existiert nicht!
Was ist denn da falsch?
ich habe folgendes Problem:
1. Ich ermittle die session_id() und speicher diese in der Variable $session ab. Gleichzeitig wird die SESSION-ID beim Login in der Datenbank abgepseichert.
2. Mein Script überprüft bei jedem Reload (alle 30 Sekunden), ob die abgespeicherte Session-ID mit der ermittelten ($session=) session_id() übereinstimmt. Wenn nicht, wird auf die logout.php weitergeleitet mittels header("location: ./logout.php");
index.php
PHP-Code:
//hier ist noch die global.php eingebunden
//mit session_start und $session = session_id()
$query = $db->query("SELECT session FROM $tabelle_user WHERE userid='$logid'");
$row = $db->fetch_array($query);
if($row[0] <> $session){
header("location: ./logout.php");
exit;
}
PHP-Code:
<?php
//Falls die Dauer der Sitzung abgelaufen ist oder man auf LOGOUT geklickt hat!
if($_SESSION['logged_in'] <> 1 OR $_SESSION['logtime'] <= $time ||
$_SESSION['logid'] <= 0 OR $_GET['logout'] == 1){
$_SESSION['logged_in'] = '';
$_SESSION['logid'] = '';
$_SESSION['logtime'] = '';
unset($_SESSION);
header("location: ./login.php");
exit();
}
//Falls es eine header-weiterleitung auf die logout.php gegeben hat
elseif(basename($PHP_SELF) == 'logout.php'){
$_SESSION['logged_in'] = '';
$_SESSION['logid'] = '';
$_SESSION['logtime'] = '';
unset($_SESSION);
header("location: ./login.php");
exit();
}
?>
Umgekehrt, falls ich erst mit dem IE drinne war und dann mit dem Firefox mich einlogge, reloaded der IE, gibt aber als reloadete Seite einfach ne 404-Seite aus: Seite existiert nicht!
Was ist denn da falsch?
Kommentar