Hi Sven,
Als allererstes sollte dich interessieren, was dein Code
eigentlich für Cookies im HTTP-Header produziert. Denn nur das hat
Einfluß auf den Browser.
Schon klar. Der produziert einen standardkonformen Zeitstempel-String, z.B.:
Sat, 10-Mar-2007 12:53:29 GMT
Die entsprechende Konsolen-Ausgabe sieht so aus:
Sam Mär 10 13:57:54 CET 2007
Die kann aber aussehen, wie sie will, da sie mit dem Code zum Ermitteln der Cookie-Ablaufzeit nichts zu tun hat:
---------------------------------------------------------------------
my $LoginAblaufdatum = MakeCookieExpireDatum(3600); # Das Login soll nach 1 Stunde Inaktivität ablaufen.
SetCookie('VvUsername', $username, $LoginAblaufdatum);
sub MakeCookieExpireDatum
{
my $Sekunden = shift;
my @Wochentage = ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
my @Monate = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
my ($Sekunde, $Minute, $Stunde, $Tag, $Monat, $Jahr, $Wochentag) = gmtime(time + $Sekunden);
my $ExpireDate = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT", $Wochentage[$Wochentag], $Tag, $Monate[$Monat], $Jahr + 1900, $Stunde, $Minute, $Sekunde);
$ExpireDate;
}
sub SetCookie
{
my $CookieName = shift;
my $CookieValue = shift;
my $CookieExpireDate = shift;
$CookieValue =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
$CookieExpireDate = 'Fri, 01-Jan-2038 00:00:00 GMT' if('' eq $CookieExpireDate);
print "Set-Cookie: $CookieName=$CookieValue; Expires=$CookieExpireDate\n";
}
---------------------------------------------------------------------
Kann ja durchaus sein, dass dir das letzten Monat (de:Feb == en:Feb) oder den Monat davor (de:Jan == en:Jan) nicht aufgefallen ist.
Die Scripts laufen schon mehrere Jahre.
Gruß,
Stefan