Guten Tag,
ich möchte Cookies setzen und wieder auslesen für ein Login.
Das klappt auch fast.
$q = CGI->new;
#[... Logindaten prüfen ...]
$cookie1 = $q->cookie(
-name => "ma_id",
-value => $user{mitarbeiter_id},
-expires => "+3d",
-path => "/",
);
$cookie2 = $q->cookie(
-name => "session_id",
-value => "$session_id",
-expires => "+3d",
-path => "/",
);
print "Set-Cookie: $cookie1\n";
print "Set-Cookie: $cookie2\n";
print $q->header();
Danach versuche ich direkt das Cookie wieder zunutzen, in diesem Fall kurz einfach
print $q->cookie("ma_id") ."<-->". $q->cookie("session_id");code]
Nun wird nur "<-->" ausgegeben, d.h. er konnte die Cookies nicht auslesen.
Wenn ich aber nun die Seite neulade oder eben einen andern Link nutze, der dann wieder auf die gleiche weise die Cookies ausliest (ohne wie oben neue zu schreiben) zeigt er direkt die richtigen werte an.
Ich verstehe nicht wieso ich erst nach einem reload auf die Werte zu greifen kann und nicht direkt nach print $q->header();
Irgendwie muss meine Lösung ja halb richtig sein, weil ich zumin nach dem Reload auf die Werte bzw. die Cookies zugreifen kann. Sonst hätte ich vermutet das es etwas mit
[code lang=perl]print "Set-Cookie: $cookie1\n";
print "Set-Cookie: $cookie2\n";
print $q->header();
zutun hat.
Ich habe zwar schon öfters gesehen das man
print $q->header(-cookie=>[$cookie1,$cookie2]);
macht und habe dies auch probiert, aber leider mit gleicher Wirkung.