Thread zum xten mal apache::session::*: wie genau funktionierts? (3 answers)
Opened by Lukas at 2004-05-23 01:08

coax
 2004-05-23 19:01
#2522 #2522
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Hi,

die Doku von Apache::Session erklaert die Verwendung von Apache::Session::File.
Apache::Session::File ist eine von Apache::Session abgeleitete Klasse (erbt also alles von Apache::Session),
die bindet die Komponenten von Apache::Session zusammen und gibt an wie die Daten verwaltet werden.

Die Verwendung ist einfach, du bindest ein Hash an die entsprechende Klasse (hier Apache::Session::File) und verwendest den Hash so wie sonst auch.
Code: (dl )
1
2
3
tie %session, 'Apache::Session::File', $id,
     { Directory => "/tmp/",
         LockDirectory => "/tmp/"};

Die zwei Parameter ($id und der anonym. Hash) sind optional.
Laesst du den ersten Parameter weg oder setzt ihn auf undef wird eine neue Session angelegt,
gibst du stattdessen eine gueltige SessionID an wird Session mit der ID wiederhergestellt.

Weitere Daten speicherst du wie bei jeden normalen Hash,
Code: (dl )
$session{foo} = 'bar';

ebenso liest du die Daten.
Code: (dl )
my $var = $session{foo};


Wenn du eine Session loeschen moechtest rufst du die Objektmethode des gebundenen Objekts auf, das geht zum Beispiel so:
Code: (dl )
tied(%session)->delete;

tied liefert das an %session gebunde Objekt zurueckt und dann wird dessen delete-Methode aufgerufen.

Quote
Ist dieses /tmp/ verzeichnis auf dem client oder auf dem server?

Es liegt natuerlich auf'm Server.

Quote
Wie kann ich überprüfen ob eine Datei erzeugt wurde?

Das Verzeichnis in dem die Sessiondateien gespeichert werden ist das was beim Binden
an den Hash bei Directory angegeben wurde, bzw. wenn keins angegeben wurde /tmp/.
Die Sessiondateien selbst tragen als Namen die Session-ID, so koenntest du also einfach mit
Code: (dl )
1
2
3
4
5
if( -e $session_verzeichnis . $id) {
   print "Datei existiert\n";
} else {
   print "Datei existiert nicht\n";
}

auf die Existenz pruefen.

Quote
Wird die Datei nach einer bestimmten Zeit gelöscht?

Wann die Session geloescht wird liegt bei dir, loeschen kannst du sie mit den oben beschriebenen delete().

Sieh dir auf jeden Fall erstmal Apache::Session an :)

Grusz Christian.
,,Das perlt aber heute wieder...'' -- Dittsche

View full thread zum xten mal apache::session::*: wie genau funktionierts?