PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Automatischer Logout



LinuxNewbee
18-10-2002, 07:51
Hi leute!

Ich möchte einen kleinen Loginbereich basteln den man nur mit entsprechdem Zugangsinformationen bestreten kann.
Ist auch kein Problem, das krieg ich wohl hin!
aber wie mache ich das, dass user die vergessen auf den logoutbutton zu klicken automatisch nach ner zeit ausgelogt werden?

Gaert
18-10-2002, 16:18
Hallo!

Wenn du einen Loginbereich schreiben willst, dann musst du ja die Infos zum Login irgendwo speichern... vorteilhaft wäre es das in einer mysql DB zu machen!

Warscheinlich wirst du auch die Session Funktionen von PHP verwenden wollen!

Also hier mein Vorschlag:

Erzeugst eine Tabelle und speicherst darin die Session ID und den Zeitpunkt [time()] des Logins. Wenn du am Anfang einer geschützten Seite überprüfst, ob der Benutzer eingeloggt ist machst du gleichzeitig eine Abfage auf die DB und schaust ob der Login länger als XX Minuten zurückliegt...

Ausserdem solltest du eine Garbage control schreiben, die dir sagen wir z.B. beim Aufruf der Logout funktion alle abgelaufenen Sessions aus der DB löscht!

Hoffe das hilft...

Nico

LinuxNewbee
24-10-2002, 14:24
Ja das mit der Datenbank hat ich so vor! das mit dem "login speicher" ist mir noch gar net so eingefallen.
aber da hab ich immer noch das problem, dass der user (im fall dass er sich nicht ausloggt) in der database eingeloggt bleibt oder nicht?

Kevin

ps.
was hat das mit dieser session-funktion auf sich?

Gaert
24-10-2002, 21:07
Er bleibt zwar in der DB eingeloggt, aber die Session ist ja nicht mehr gültig, weil du die Zeit des Logins mit der aktuellen Zeit vergleichen kannst!

Beispiel für die Check Funktion:



function session_check()
{
$sess_length=60 //Session dauert 60 Sekunden...
$c_time = time() - $sess_length;

$sql="SELECT COUNT(*) as TOTAL from session_data WHERE
session='$GLOBALS[PHPSESSID]' AND
session_time>$c_time";
$recid = mysql_query($sql);
$result = mysql_fetch_array($recid);
return $result[TOTAL]; // 1 = Session Gültig, 0 = Session Ungültig
}


Die Garbage Funktion sollte dann alle Datensätze aus der Datenbank löschen bei der die session_time zu alt ist (könntest du auch über nen cron job regeln, aber ich denke wenn du´s in den regulären Logout oder Login prozess integrierst sollte es reichen)...

Hmm... mir fällt gerade ein... du könntest ja bei jeder Seite bei dem du die Funktion session_check() einsetzt hinterher die aktuelle Zeit als session_time setzen (natürlich nur wenn die Session noch gültig ist)!

Dann würde die Session des Benutzers automatisch ungültig, wenn er länger als 60 Sekunden keine neue Seite aufruft... das nenn ich doch dann mal nen Auto logout ;)

Ach so ja... Session Funktionen: http://php.net/session

Hoffe das hilft dir ein bisschen

Nico