Also, ich versuche mich diesmal klar und deutlich auszudrücken...
Ich habe eine Login-Klasse, die mit dem Konstruktor auf jeder Seite überprüft, wann der User das letzte mal eine Aktion gestartet hat, d.h. einen Link aufgerufen oder ein Formular abgeschickt hat. Aber irgendwie setzt der den Online-Status nicht wieder zurück auf 0...
Was ist daran denn falsch? Bzw, was muss verbessert werden?
Ich habe eine Login-Klasse, die mit dem Konstruktor auf jeder Seite überprüft, wann der User das letzte mal eine Aktion gestartet hat, d.h. einen Link aufgerufen oder ein Formular abgeschickt hat. Aber irgendwie setzt der den Online-Status nicht wieder zurück auf 0...
PHP-Code:
<?php
//Hier die Funktion (Ausschnitt aus der Klasse)
public function Timeout($Table)
{
$qry_user = $this->DB->SelectOne("SELECT LastAction FROM ".$Table."
WHERE UserSession='".session_id()."'
LIMIT 1");
$lastaction = date("H.i.d.m.y");
if ( empty ($qry_user['LastAction']) )
{
$udt_user = $this->DB->Query("UPDATE ".$Table." SET LastAction='".$lastaction."',
UserStatus='0',
UserSession=NULL
WHERE UserSession='".session_id."'");
}
if ( !empty ($qry_user['LastAction']) )
{
$lastaction = explode(".",$qry_user['LastAction']);
$stunde = $lastaction[0]; //Teil 1
$minute = $lastaction[1]; //Teil 2
$tag = $lastacion[2]; //Teil 3
$monat = $lastaction[3]; //Teil 4
$jahr = $lastaction[4]; //Teil 5
$now_stunde = date("H");
$now_minute = date("i");
$now_tag = date("d");
$now_monat = date("m");
$now_jahr = date("y");
if ($now_jahr > $jahr OR
$now_monat > $monat OR
$now_tag > $tag OR
$now_stunde > $stunde
OR ($now_minute - 1) > $minute )
{
$result = $this->DB->Query("UPDATE ".$Table." SET UserStatus='0',
UserSession=NULL
WHERE UserSession='".session_id()."'");
return true;
}
}
}
?>
Kommentar