Hmm, evt meinst du das so, dass ich zu der session auch noch jedesmal die zeit hinschreibe, wann diese zuletzt aktuallisiert wurde.
Das oder wann die Session abläuft, egal wie rum.
dann z.b. mittels cronjob alle 5 minute schaue, ob diese session älter als 5 minute ist wenn ja wird sie gelöscht?
Nicht so kompliziert. Wenn das nächste Mal die inkludierte Datei aufgerufen wird von irgend einem User, liest Du alle Datensätze aus, die z. B. die Spalten SID, letzte_aktion haben. Jetzt schaust Du bei allen, ob der in letzte_aktion gespeicherte Wert + Zeit X kleiner der aktuellen Zeit ist. Wenn ja, löscht die Session (Du löschst alle Datensätze, auf die das zutriffst). Wenn Du das mit PHP-Sessions kombinierst (was, wie schon mehrfach gesagt, dann eigentlich nicht nötig ist), fragst Du bei jedem Zugriff eines Benutzers ab, ob seine SID noch in der DB steht. Nein? Dann ist seine Session abgelaufen, und er weitergeleitet zum Login.
Wenn Du mit PHP-Sessions arbeitest, brauchst Du aber gar nichts in einer DB speichern (es sei denn Sonderwünsche wie mehrfach falsche Angaben beim Login sperren den Account für 24 Stunden oder so ähnliches). Du speicherst in einer Session-Variable den Zeitpunkt des letzten Zugriffs. Bei jeder Aktion des Users, wird Dein Skript durchlaufen. Darin prüfst Du, ob die Session abgelaufen ist. Wenn nicht, speicherst Du in ihr die aktuelle Zeit.
Wenn er sich ohne Logout verabschiedet, bleibt zwar die Session offen. Durch die Sessionvariable mit dem letzten Zugriff, die nicht mehr aktualisiert wird, ist aber eine Sicherung eingebaut, daß sich Unbefugte keinen Zutritt verschaffen. Sollten sie, was absolut unwahrscheinlich ist, an die Session-ID kommen, haben Sie nur eine beschränkte Zeit, was mit ihr anzufangen. Ist die Zeit abgelaufen, nutzt ihnen die SID nichts mehr.
Die Session-Datei bleibt bestehen, da hast Du recht. Wenn sich in ihr nichts ändert, merkt das aber PHP und löscht sie automatisch. Die Zeitspanne, nach der das passiert, kann in php.ini eingestellt werden. Ist aber auch egal, weil keiner mehr mit ihr was anfangen kann, sobald die Sitzung (gemäß Deinem Skript) abgelaufen ist. Ob PHP meint, die Sitzung gibt es noch oder nicht, ist egal, weil Du ja intern über die Sessionvariable prüfst, ob die Zeit abgelaufen ist. Du brauchst Dir deshalb um diesen Punkt wirklich keinen Gedanken machen - wenn Du mit einem automatischen Session-Logout arbeitest, was ich Dir raten würde. Wenn Du intern nicht die Zeiten vergleichst, dann bleibt die Session halt etwas länger gültig, aber niemals über den in php.ini festgelegten Wert hinaus.
*grübel* :-)
Freue mich auf Dein Feedback!
Marco