User since
2005-01-10
5
Artikel
BenutzerIn
hallo,
habe folgendes Test Skript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/perl
use CGI;
use CGI::Session;
my $cgi = new CGI;
my $sid = $cgi->param('p');
if (defined $sid) {
my $session = $session = new CGI::Session("driver:File", $sid, {Directory=>"/tmp"});
$sid = $session->id();
print "Content-Type: text/html\n\n";
print "<HTML><BODY><H1>$sid</H1></BODY></HTML>";
print "in if";
}
else {
my $session = $session = new CGI::Session("driver:File", undef, {Directory=>"/tmp"});
$sid = $session->id();
print "Content-Type: text/html\n\n";
print "<HTML><BODY><H1>$sid</H1></BODY></HTML>";
print "in else";
}
Beim Aufruf mit aktueller ID wird trotzdem einen neue erzeugt.
Diese Problem habe ich auch schon bei anderen gefunden, aber leider ohnen Lösung.
1)
http://localhost/cgi-bin/session.pl
=>e74a632c6d85000db1fb1453e27d6978
2)
http://localhost/cgi-bin/session.pl?p=e74a632c6d85000db1fb1453e27d6978
=>d4d649c623dce8284b914e26269c58de
???
thx
tina
User since
2003-11-28
3645
Artikel
ModeratorIn
Hier geht es (von der Kommandozeile). Werden ueberhaupt Session-Dateien in /tmp abgelegt (cgisess_<sessionid>).
User since
2005-01-10
5
Artikel
BenutzerIn
Der Fehler steckte in der Verzeichnissangabe.
Für win:
my $session = $session = new CGI::Session("driver:File", undef, {Directory=>'C:\tmp\sessions'});
Für *nix/linux:
$session = new CGI::Session(undef, undef, {Directory=>'../tmp/sessions'});
Die Pfade müssen existieren!
g
tina
User since
2003-11-28
3645
Artikel
ModeratorIn
Um kompatibel zu bleiben, koennte man wahrscheinlich auch
use File::Spec;
$tempdir = File::Spec->catdir(File::Spec->tmpdir, "sessions");
schreiben.
User since
2003-08-04
5246
Artikel
ModeratorIn
nebenbei: wenn du eh schoen mit lokalen variablen arbeitest, moechte ich dir
ans herz legen... das haette dir z.B. den fehler mit
my $session = $session = ...
gezeigt...