Schrift
[thread]12023[/thread]

CGI::Session

Leser: 4


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Gast Gast
 2008-06-16 16:57
#111067 #111067
Hallo,

hat jemand Erfahrung mit CGI::Session

ich lass mit folgenden Code eine Session erzeugen und mit auf der Seite anzeigen

Code: (dl )
1
2
3
4
CGI::Session->name('Session-Test');
$session = new CGI::Session() or die CGI::Session->errstr;
print $sessid = $session->id;
print $session->header();


Wie schaffe ich es die neu erzeugte Session-Id auf einer anderen Seite anzuzeigen
Wenn ich folgenden Code verwende wird nur eine neue Session erzeugt und angezeigt:

Code: (dl )
1
2
$session = new CGI::Session;
print my $CGISESSID = $session->id;


MfG
moritz
 2008-06-16 18:44
#111082 #111082
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Also als erstes musst du $session->flush() aufrufen, damit die Session überhaupt gespeichert wird.

Als zweites musst du dir überlegen, wie du die Session-ID überträgst. Da du $session->header() ausgibst, vermute ich, dass du cookies benutzt. Wenn das der Fall ist, kannst du CGI::Session->new() als zweites Argument ein CGI-Objekt mitgeben, das liest dann automatisch die Session-Information daraus.

Ich empfehle, CPAN:CGI::Session::Tutorial zu lesen - das erklärt viele dieser Dinge detailierter.
bieber
 2008-06-17 17:15
#111150 #111150
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
ich stehe auch grad irgendwie auf dem Schlauf mit cgi::session

wie kann ich denn überprüfen, ob auf dem server eine gültige Session zur ESSID des Cookies existiert? muss ich mir immer erst eine neue Session erzeugen, und dann überprüfen ob die cookie_essid gleich der neuen session->id() ist?Tritt z.B. auf wenn die session abgelaufen ist.

meine Sessions erzeuge ich so:

Code (perl): (dl )
1
2
3
4
my $sid = $cgi->cookie('CGISESSID') || $cgi->param('CGISESSID') || undef;       
my $session = new CGI::Session(undef, $sid, {Directory=>'tmp/'});       
$session->expire(10);
         
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
bieber
 2008-06-18 15:25
#111192 #111192
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
mkay....habs selbst gefunden

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
my $sid = $cgi->cookie('CGISESSID') || $cgi->param('CGISESSID') || undef;
my $s = CGI::Session->load(undef, $sid, {Directory=>'tmp/'} ) or die CGI::Session->errstr();
if ( $s->is_expired ) {
  print "bitte loggen Sie sich <a href=\"login.pl\">hier</a> neu ein, ihre Session ist ungültig";
  exit(0);
}
if ( $s->is_empty ) {
  print "bitte loggen Sie sich <a href=\"login.pl\">hier</a> ein, ihre Session existiert nicht";
  exit(0);
}


einen kleinen Tip hättet ihr mir doch aber wenigstens geben können... egal
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
Gast Gast
 2008-06-18 19:00
#111238 #111238
Wir sind nicht immer anwesend. Und nicht alle haben alles an Wissen parat.

Ein Forum ist kein Chat.
Wenn du rasend schnell Hilfe suchst (und dann auch oft bekommst), geh doch bitte mal in IRC:
irc.perl.org in Raum #perlde
moritz
 2008-06-18 20:29
#111242 #111242
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Der kleine Tipp war CGI::Session::Tutorial - voraussehend. Da steht auch drin, dass es is_expired() gibt.
bieber
 2008-06-19 10:22
#111252 #111252
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
sorry, habs im Tutorial überlesen, bzw. nicht gecheckt dass da dann "load" genutzt wurde... ist ja meine eigene Doofheit, habs dann im normalen CGI::Session text gefunden

ich wollte euch nicht zu nahe treten, ihr seid eine super community, war gestern einfach nur gefrustet weil ich es nicht gebacken bekommen haben, ich bitte um Entschuldigung
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
GwenDragon
 2008-06-19 12:39
#111255 #111255
User since
2005-01-17
14782 Artikel
Admin1
[Homepage]
user image
Ja, das passiert in der Hast.
Nur die Ruhe, wir sind ja zum Helfen hier ;)
Gast Gast
 2008-06-19 14:56
#111261 #111261
Noch ein Problem zum Thema Session

Wie kann ich eine Session löschen
Der Befehl Session->delete() funktioniert irgendwie nicht



Code (perl): (dl )
1
2
3
4
5
6
7
    use CGI::Session;
    $session = new CGI::Session();
    $session->param('fruits', 'Apfel');
    $session->new();
    print $session->id()."<br>";
    $session->delete();
    print $session->id()."<br>";


nachdem Befehl $session->delete(); sollte eigentlich keine Session mehr zu sehen sein.
Aber trotzdem wird eine Session ausgegeben
moritz
 2008-06-19 15:07
#111262 #111262
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Hast du mal probiert, nach ->delete() auch noch ein ->flush() zu machen?
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2008-06-16 16:57.