2 Stimmen

Warum leert sich meine CGI::Session immer wieder willkürlich?

Die Sitzung wird größtenteils gut geladen, aber manchmal werden alle Daten zufällig gelöscht, und ich weiß nicht, warum:

Meine neue Sitzung erstellen:

$session = CGI::Session->new( "driver:file",undef,{Directory => '/tmp'} );

$session->param('logged_in', 1);
$session->expire('logged_in', '+10m');

$session->expire('+1h');

Wenn ich jetzt auf eine andere Seite gehe und die Sitzung lade, tue ich das:

$session = CGI::Session->load ( "driver:file", $sid, {Directory => '/tmp'} );

return 0 if $session->is_expired;

return 0 if !$session->param('logged_in');

return $session;

Das Problem, das ich habe, ist, dass manchmal, bevor die 10-Minuten-Marke abgelaufen ist, der "logged_in"-Parameter leer ist, obwohl er das nicht sein sollte. Woran kann das liegen?

1voto

Sinan Ünür Punkte 114993

Erstens scheinen Sie nicht zu verwenden Streng : Das sollten Sie. Zweitens: Verwenden Sie keine indirekte Objektschreibweise. D.h., verwenden Sie CGI::Session->new .

Um herauszufinden, was vor sich geht, verwenden Sie den Generator für sequentielle IDs zur Fehlersuche und stellen Sie sicher, dass Sie die Sitzung sehen, die Sie glauben zu sehen. Stellen Sie sicher, dass Sie die Sitzung bei der Anmeldung erstellen, aber von diesem Zeitpunkt an müssen Sie load es.

Überprüfen Sie, wie Sie die Sitzungs-ID verfolgen: Verwenden Sie Cookies, Query-String-Parameter oder From-Parameter? Stellen Sie sicher, dass die korrekte Sitzungs-ID jederzeit verfügbar ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X