PHP - Sessionwert aus Datenbank löschen

Bash, Shell, PHP, Python, Perl, CGI
shadoan
Posts: 3
Joined: 2006-11-26 00:09

PHP - Sessionwert aus Datenbank löschen

Post by shadoan » 2007-10-25 15:28

Hallo,

ich habe eine Session erzeugt in einem PHP-Skript, deren ID ich in einer Datenbank speichere.

Nun möchte ich gerne besagte ID nach Zerstörung der Session oder nach X Minuten wieder löschen.

Wie wäre das lösbar?

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: PHP - Sessionwert aus Datenbank löschen

Post by Joe User » 2007-10-25 15:36

Code: Select all

DELETE FROM sessions WHERE id = (int) $id

smoove
Posts: 13
Joined: 2007-10-05 14:46

Re: PHP - Sessionwert aus Datenbank löschen

Post by smoove » 2007-10-25 22:12

Du könntest in der Datenbank einen "expiretime" Wert einfügen, der beim Login und bei jedem Seitenaufruf auf time()+xSekunden gesetzt wird, und dann entweder per Cronjob, oder, wenn du keine Cronjobs hats wieder bei jedem Seitenaufruf alle abgelaufenen Einträge löschen. Ist dann natürlcih etwas mehr "Datenbank Action" bei jedem Seitenaufruf :/

Mal gucken, villeicht fällt mir noch was besseres ein - das oben war jetzt spontan ;)

mfg. smoove :)

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: PHP - Sessionwert aus Datenbank löschen

Post by flo » 2007-10-25 22:53

Code: Select all

SELECT login, name FROM TABELLE WHERE (t_expire > NOW()) AND SESSION='jsdlkfjghdlkfjhg'


Und dann diejenigen dynamisch um Zeit x verlängern, die Zugriffe haben - die anderen laufen dann von ganz alleine ab und wenn die Session (zer|ge)stört wird, fehlt der Schlüssel, d.h. in jedem Fall kommt nur eine row zurück.

Wenn man die Werte aus der Tabelle nicht braucht, kann man das Update damit zusammenfassen und über "affected rows" ermitteln, ob ein(!) Datensatz modifiziert wurde.

Jeden Tag kann dann ein Cronjob mit "delete" die alten Sessions entfernen und Aufräumen.