#!/usr/bin/perl use strict; use warnings; use CGI; use CGI::Cookie; use Digest::MD5 qw(md5_hex); # ein paar Variablen my $cookiename = 'SCHERZKEKS'; my %cookies = fetch CGI::Cookie; my $sid = undef; my $nocookie = undef; # nehme die SID aus dem gesendeten Cookie if(defined $cookies{$cookiename}){ $sid = $cookies{$cookiename}->value; # hier sollte noch geprüft werden, ob die SID # den Anforderungen genügt } else{ # erzeuge eine neue SID $sid = _makeSID(); $nocookie = "Kein Cookie vom UA bekommen\n"; } # Response if(defined $nocookie){ my $cookie = new CGI::Cookie( -name => $cookiename, -value => $sid, -path => '/', ); print "Set-Cookie: $cookie\n" ; } print "Content-Type: text/plain\n\n"; print "SID: $sid\n"; print $nocookie if $nocookie; exit; ########################################################################### # SessionID erzeugen sub _makeSID{ my @chars = ('A' .. 'Z', 'a' .. 'z', 0 .. 9, '+', '-'); my $len = scalar @chars; my $id .= time(); $id .= $$; for(my $i = 0; $i < $len; $i++){ $id .= $chars[int(rand($len))]; } $id = substr($id, 0, $len); $id = md5_hex($id); return $id; }