你好 Siechfred,
Ich bin gerade dabei, mir ein eigenes Session-Objekt zu basteln, da mir
die sehr nützlichen CGI::Session-Module leider nicht zur Verfügung
stehen und ich auch keine Möglichkeit habe, diese zu installieren.
Natuerlich kannst du die installieren. Die sind reines Perl, es reicht,
die in das richtige Verzeichnis zu packen. Eventuell noch ein 'use lib'
und dann sollte das gehen.
Meine SessionID sieht im Moment so aus:
my $SID = "$$"."$<";
Dazu meine Fragen:
Kann ich davon ausgehen, dass dieser String immer eine konstante
Länge hat?
Nein. $< ist 32 Bit lang, schwankt also zwischen einem Zeichen und 10
Zeichen (2^32).
Sollte ich die ID noch verschlüsseln (MD5, base64 o.ä.) oder würde
es ausreichen, den String lediglich mit pack zu behandeln?
Es reicht vollstaendig, ihn mit pack() zu behandeln. Allerdings wuerde ich
noch das Zufallselement mit hineinbringen, sonst sind deine Session-Files
vorhersagbar.
Gibt es vielleicht sogar eine bessere bzw. elegantere Variante, eine
ID zu erzeugen?
Ich mache das immer so:
sub generate_unid {
my $length = shift;
my $rmid = $ENV{HTTP_X_FORWARDED_FOR} || $ENV{REMOTE_ADDR} || '654.546.654.546';
my @chars = split // => 'aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789-_';
my $id = '';
$rmid =~ tr!.!0!;
$id .= $chars[$_] foreach split // => $rmid;
$id .= $chars[rand @chars] for 1..$length;
return $id;
}
再见,
CK
Das Leben ist wie ein Kartenspiel: was dir gegeben wurde, ist vorbestimmt. Doch wie du damit spielst, ist deine Entscheidung.
http://wwwtech.de/