Den "Session-Text" habe ich nicht selbst geschrieben. Das macht ja Apache::Session so schön einfach für einen ;-).
Das sieht ja z.B. so aus:
Zuerst die Session binden:
tie my %session, 'Apache::Session::MySQL', $sessionId, {
Handle => $dbh,
LockHandle => $dbh,
};
$sh = \%session;
Dann kann man die Session mit diversen Informationen "laden":
$sh->{ 'sidUsrId' } = $userId;
$sh->{ 'sidLogin' } = $login;
$sh->{ 'sidGrpId' } = $groupId;
$sh->{ 'sidHtml' } = $html;
$sh->{ 'sidNewsL' } = $newsletter;
$sh->{ 'sidStatus' } = $status;
, bzw. ebenso einfach auf diese Daten zugreifen.
Die Session wird von Apache::Session::MySQL in eine Datenbanktabelle Namens "sessions" geschrieben, die eigentlich nur 2 Felder beinhaltet. Ein Feld mit der Session-Id und eines mit allen Bezeichner-Wert-Paaren, die in die Session "geladen" wurden.
Ich bin leider ganz und gar kein Perl- und SQL-Profi ;-). Deshalb weiß ich auch nicht genau, wie Rechenaufwändig solche Datenbankabfragen sind. Irgendwie hatte ich immer das
Gefühl, dass mit dem Binden der Session und Zugriff auf die Variablen mehr passiert, als dass diese nur gelesen wird. So gibt es auch keinen extra Befehl, der die Session in die DB schreibt. Also muss doch eigentlich bei jedem Zugriff auf das Session-Objekt, bzw. auf so eine "Session-Variable" die Session komplett neu in die Datenbank geschrieben werden (?). Leider bin ich mit meinem schmalen Perl-Wissen noch nicht so ganz hinter die Funktion des Moduls Apache::Session gestiegen.
Die Sache mit dem Timestamp ist eine gute Idee, die ich mir merken werde, ob ich sie nun hier benutze oder nicht.
Was ist denn eine empfehlenswerte Art, so einen Stempel, der ja dann mindestens die User-ID enthalten sollte, zu gestalten. Die User-ID sollte ja dann schon halbwegs versteckt sein.