Hallo Leute!
Ich habe schon in einem anderen Thread gefragt (siehe hier), wodran das liegen kann, dass meine Session nicht expired. Nachdem ich aber ne Weile mit PHP-Leutem im IRC geredet hab, bin ich zu dem Schluss gekommen, dass eine andere Abfrage am einfachsten ist.
Mir wurde lang und breit erklärt, dass es am einfachsten ist, bei jeder Benutzeraktion (Der Benutzer hat sich vorher bereits eingeloggt) eine Zeit zu speichern, und diese dann bei jeder nächsten mit der Alten zu vergleichen, und zu sehn ob die differnz zu groß ist, und ggf. die Session zu zerstören (beenden).
Das habe ich jetzt wie folgt versucht umzusetzen. Die funktion head(); wird hierbei in jeder Datei ausgeführt, die ich benutze (und vorher die Session gestartet).
Code:
Mein Problem ist jetzt aber: Das funzt soweit eigentlich, leider bin ich aber immer erst nach der zweiten Aktion geflogen (habs bisher mitn Site refresh per Link getestet, nicht mit mehreren Dateien) - eigentlich sollte ich aber schon nach der ersten Aktion nach ablauf der Zeit fliegen.
Kann mir einer sagen was ich falsch mache, oder ändern muss, oder oder? Danke schonmal!
Achja, P.S.: Die Variable $time_session_expiry wird in einer anderen Datei vorher required, in der diese hier gepostete anschließend required wird.
Ich habe schon in einem anderen Thread gefragt (siehe hier), wodran das liegen kann, dass meine Session nicht expired. Nachdem ich aber ne Weile mit PHP-Leutem im IRC geredet hab, bin ich zu dem Schluss gekommen, dass eine andere Abfrage am einfachsten ist.
Mir wurde lang und breit erklärt, dass es am einfachsten ist, bei jeder Benutzeraktion (Der Benutzer hat sich vorher bereits eingeloggt) eine Zeit zu speichern, und diese dann bei jeder nächsten mit der Alten zu vergleichen, und zu sehn ob die differnz zu groß ist, und ggf. die Session zu zerstören (beenden).
Das habe ich jetzt wie folgt versucht umzusetzen. Die funktion head(); wird hierbei in jeder Datei ausgeführt, die ich benutze (und vorher die Session gestartet).
Code:
PHP-Code:
<?php
// Kopf-Funktionen
function head() {
// Falls eingeloggt, aktivität überprüfen
if (isset($_SESSION['nick'])) {
checkActivity();
}
headWithOutBody();
echo ' </head>
<body>';
}
function headWithoutBody() {
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Piraten</title>';
}
// Fuß-Funktion
function foot() {
echo ' </body>
</html>';
}
// In Header involviert
function checkActivity() {
global $time_session_expiry;
// Benutzer war zu lange inaktiv
if ((time() - $_SESSION['lastact']) > ($time_session_expiry * 60)) {
session_destroy();
}
else {
// Sonst letzte Aktionszeit setzen
$_SESSION['lastact'] = time();
}
}
?>
Kann mir einer sagen was ich falsch mache, oder ändern muss, oder oder? Danke schonmal!
Achja, P.S.: Die Variable $time_session_expiry wird in einer anderen Datei vorher required, in der diese hier gepostete anschließend required wird.
Kommentar