Thanks for Data::Dumper, info.
After reading CGI::Session twice, dumper data, started to give clues, and using debugging i could solve my session management problem.
But don't know why still, around 6 out of 10, scenarios fails completely in browser and command line mode. No existing session data is captured, or even when session is set to expire in 5 hours, it still creates new session
$VAR1 = bless( { '_STATUS' => 1, '_OBJECTS' => {}, '_CLAIMED_ID' => un
+def, '_DATA' => { '_SESSION_ID' => undef, '_SESSION_ATIME' => undef,
+'_SESSION_REMOTE_ADDR' => '127.0.0.1', '_SESSION_CTIME' => undef }, '
+_QUERY' => bless( { '.parameters' => [], 'use_tempfile' => 1, '.chars
+et' => 'ISO-8859-1', '.cookies' => undef, '.fieldnames' => {}, 'param
+' => {}, 'escape' => 1 }, 'CGI' ), '_DRIVER_ARGS' => {}, '_DSN' => {
+'serializer' => 'default', 'id' => 'md5', 'driver' => 'file' } }, 'CG
+I::Session' ); Content-Type: text/html; charset=ISO-8859-1
code of index.pl
my $cgi = CGI->new;
print $cgi->header();
my $session = CGI::Session->load() or die CGI::Session->errstr;
if ( $session->is_expired )
{
print "Your session timed out! Refresh the screen to start new
+ session!";
exit(0);
}
elsif ( $session->is_empty )
{
$session = $session->new() or die $session->errstr;
print $session->header();
print $session->id();
$session->expire("5h");
print "<a href='called.pl'>call</a></br></br>";
print Dumper($session);
$session->flush();
}
else
{
print "session found";
print "<a href='called.pl'>call</a></br></br>";
}
and code of called page
my $cgi = CGI->new;
print $cgi->header();
my $session = CGI::Session->load() or die CGI::Session->errstr;
print Dumper($session);
print "<a href='index.pl'>index</a></br></br>";
$session->flush();
So, I have to test further, would soon post update on this
|