Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]578[/thread]

Frage zu CGI::Session: Speichern der Session-Daten



<< >> 9 Einträge, 1 Seite
nepos
 2005-09-20 13:05
#5639 #5639
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo zusammen!

Ich haette eine Frage zu CGI::Session wo ich grade ein wenig auf dem Schlauch stehe. Und zwar gehts ums Speichern der Session-ID. Die kann ich ja wahlweise per Cookie oder auch der GET/POST-Variable uebergeben.
Wie muss ich das denn anstellen, wenn ich Cookies benutzen will, der User diese aber eventuell aus hat? Oder besser, wie erkenne ich das und kann dann erst die Session anderweitig uebergeben?
In CGI::Session::Tutorial ist leider nur ein Beispiel zum Auslesen dabei. Dabei wird ein CGI-Objekt uebergeben und CGI::Session holt sich die Session dann entsprechend aus Cookie oder GET/POST.
Wenn ich mich richtig erinner macht PHP das irgendwie automatisch, nur in Perl weiss ich nicht, wie ich das hinbekomme.

Danke schon mal fuer eure Hilfe :)

Ciao,
Nepos
GwenDragon
 2005-09-20 15:05
#5640 #5640
User since
2005-01-17
14745 Artikel
Admin1
[Homepage]
user image
Du setzt ein Cookie und leitest dann auf eine Adresse mit einem Skript weiter, die das Cookie wieder ausliest. Wenn das Auslesen nicht klappt, sind keine Cookies möglich.
Wenn der User keine Cookies aktiviert hat, hängst du die Session-ID an.
betterworld
 2005-09-20 15:10
#5641 #5641
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Musst Du halt hinter alle Links, die Du ausspuckst, ein "?CGISESSID=".$session->id anhaengen. CGI::Session macht dann automatisch alles weitere richtig, genau wie wenn ein Cookie gesetzt ist.\n\n

<!--EDIT|betterworld|1127214791-->
nepos
 2005-09-20 16:10
#5642 #5642
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
@GwenDragon: Ah danke, das muss ich mal versuchen.
@betterworld: Jo, das is eh klar. Mir gings eher darum, wie ich es im Skript merke, dass keine Cookies moeglich sind und ich nur dann die Variable mit einbaue ;)
nepos
 2005-09-21 17:20
#5643 #5643
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
So, nun hab ich ein anderes Problem: es klappt nicht :(
Bei jedem Zugriff wird eine neue Session aufgemacht obwohl das Cookie da ist, das die Session-ID enthaelt.
Es hilft mir nicht mal, wenn ich CGISESSID als Parameter an den CGI-Aufruf anhaenge, er macht immer eine neue Session-ID.
Kann mir da von euch eventuell jemand nen Tipp geben?
Ich weiss, dass das ganze recht vage ist, aber im Moment bin ich echt ratlos :(
betterworld
 2005-09-21 17:59
#5644 #5644
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Du hast keine Schreibrechte auf das Verzeichnis, wo die Sessions gespeichert werden sollen.

Das war nur geraten. Um das Problem besser analysieren zu koennen, brauche ich etwas mehr Quelltext und so.

Zu Deinem urspruenglichen Problem: Es hat sich auf vielen Sites auch bewaehrt, die Benutzer einfach per Checkbox auswaehlen zu lassen, ob sie Cookies benutzen wollen oder nicht.\n\n

<!--EDIT|betterworld|1127311263-->
nepos
 2005-09-22 10:35
#5645 #5645
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ja, das wars. Dummerweise spuckt das Modul nicht mal ne Warnung ins Log, wenn die Schreibrechte fehlen. Irgendwie doof...
Jetzt klappts auf jeden Fall.
Nachdem die ganze Sache nur fuer internen Firmengebrauch ist, denk ich, muss ich wegen Cookies nicht so den grossen Akt machen.
Danke auf jeden Fall fuer eure Tipps :)
Tom
 2006-07-14 17:19
#5646 #5646
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=nepos,21.09.2005, 15:20]Bei jedem Zugriff wird eine neue Session aufgemacht obwohl das Cookie da ist, das die Session-ID enthaelt.[/quote]
Ich habe ein ähnliches Problem, ich erstelle eine Session schreibe ein Cookie, bei erneutem Aufruf wird zwar das Cookie ausgelesen, erhält aber danach eine neue Session.

Code: (dl )
1
2
3
4
5
6
7
8
9
use CGI::Session;
my $cgi = new CGI;

$sid = $cgi->cookie('YAMBE_SESSID') || $cgi->param('YAMBE_SESSID') || undef;
$session = new CGI::Session(undef, $sid, {Directory=>'\tmp'});
$session->expire('3');
$session->param("USER", $lg_name);
my $cookie = $cgi->cookie(YAMBE_SESSID => $session->id );
print $cgi->header(-cookie=>$cookie);


Müsste nicht die Variabel $session den Inhalt von $sid bekommen? Bei mir bekommt $session immer einen neuen Wert.

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
Tom
 2006-07-14 20:21
#5647 #5647
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Habe jetzt das Problem eingrenzen können, und zwar wenn die Datei mit der Session nicht mehr vorhanden ist, dann schreibt er immer eine neue Session ins Cookie, aber davor stand ja noch die alte Session im Cookie also erstellt er auch keine neue Session-Datei, wie kann ich dieses Problem umgehen?

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
<< >> 9 Einträge, 1 Seite



View all threads created 2005-09-20 13:05.