hi leute
ich verwende bzw möchte cgi::session verwenden. dazu verwende ich folgenden code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$session = new CGI::Session('driver:File', undef, {Directory=>'./.tmp/sessions'});
$session->expire('+30m');
my $endzeit = new Benchmark;
my $zeitdiff = Benchmark::timediff($endzeit, $main::startzeit);
my $duration = Benchmark::timestr($zeitdiff, "nop");
$duration =~ /(\d+\.\d+) wallclock*/;
$duration = $1;
my $sname = $session->name;
my $sid = $session->id;
#session sachen speichern
$session->param('user-name', $uname);
$session->param('user-id', $ruckgabe[0]);
$session->param('user-gruppe', $ruckgabe[1]);
$session->param('user-admin', $ruckgabe[2]);
$session->flush();
print "Content-Type:text/xml\n\n";
print <<"XML";
<data duration="$duration">
<session name="$sname" id="$sid" />
</data>
XML
das ein auszug aus sub login. das modul wird natürlich zuvor per use CGI:Session eingebunden.
Der Cookie von CGI::Session wird nachher per Javascript gesetzt mit den Daten $sname und dem wert $sid.
wenn ich aber später in einer anderen sub auf die session zugreifen will. tritt immer is_empty in kraft obwohl der cookie exisitert!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
$session = CGI::Session->load or die CGI::Session->errstr;
if($session->is_empty) {
print "Content-Type:text/xml\n\n";
print <<"XML";
<data duration="0">
<titel><![CDATA[Gesperrt]]></titel>
<text><![CDATA[Bitte einloggen!]]></text>
<datum>0000-00-00 00:00:00</datum>
<einloggen todo="1" />
<bilder>
</bilder>
</data>
XML
exit;
}
elsif($session->is_expired) {
print "Content-Type:text/xml\n\n";
print <<"XML";
<data duration="0">
<titel><![CDATA[Gesperrt]]></titel>
<text><![CDATA[Session abgelaufen!]]></text>
<datum>0000-00-00 00:00:00</datum>
<einloggen todo="1" />
<bilder>
</bilder>
</data>
XML
exit;
}
kann mir jmd helfen? die entwicklung hängt fest!
vielen dank!