bradcathey has asked for the wisdom of the Perl Monks concerning the following question:

Fellow Monasterians:

Just started using CGI::Session and after some experimenting I feel I have the basic gist. Thought I should float it by the monks to see if I'm missing anything important. The first chunk sets the session and the other checks for it.

#!/usr/bin/perl use warnings; use strict; use CGI::Carp qw(fatalsToBrowser); use CGI qw/:cgi/; use Data::Dumper; use CGI::Session; my $query = new CGI; my $session = new CGI::Session(undef, $query, {Directory=>'/tmp'}); $session->param('username'); #from log-in form $session->param('logged-in',1); $session->expires("logged-in", "+1m"); my $cookie = $query->cookie(CGISESSID => $session->id ); print $query->header(-cookie => $cookie); --------------- my $session_id = cookie('CGISESSID'); my $session = new CGI::Session(undef, $session_id, {Directory=>'/tmp'} +); if ( !$session->param('logged-in') ) { log_in(); #force them to re-log-in } my $username = $session->param('username'); #continue...

Is there another way to check for the expired status of the session? I tried the "is_expired" and no-workie.

my $s = CGI::Session->load($session_id); if ( $s->is_expired ) {...

returns Can't locate auto/CGI/Session/File/is_expired.al in @INC


—Brad
"The important work of moving the world forward does not wait to be done by perfect men." George Eliot

Replies are listed 'Best First'.
Re: Refining my use of CGI::Session
by antirice (Priest) on Nov 20, 2005 at 00:52 UTC

    is_expired only exists in the 4.x branch, specifically since 4.00_01. There is an _is_expired in the 3.9x branch, however, you're unlikely to ever have a case where you'd use it since 3.9x creates a new, empty session for you if an expired one was already found. You can check for this condition with is_new.

    Note, if you want to get a session and guard against the recreation of the session, use load in the 4.x branch.