[Cgi-session-user] Why the session file never been deleted?
Brought to you by:
sherzodr
From: Mohd Y. S. <uno...@ya...> - 2006-08-03 13:57:19
|
Hi, I try CGI::Session and i come up with the following test code. but why the session file is not deleted after it expires? E.g. I press submit, and wait. But the session file still there, and $session->is_expired never come true. Why? I run the Apache web server on Windows XP. Thanks in advance. --------------------- #!c:/Perl/bin/perl -T ## ## Demo page for user login. If user login already expires, login again ## use strict; use CGI::Carp 'fatalsToBrowser'; # uncomment for debug! use CGI ":std -tabindex"; use CGI::Cookie; use CGI::Session; use constant SESSION_DRIVER => "driver:file;serializer:storable"; use constant SESSION_LOCATION => "../tmp/session"; my %user = ( userid=>'' ); my $page = new CGI(); ## Try to get the previous status (session) ## my $session = CGI::Session->load(SESSION_DRIVER, $page, { Directory=>SESSION_LOCATION }); ## If it's a submission... ## if ($page->param() and $page->param('login')) { ## Create new status (session) ## $session = new CGI::Session(SESSION_DRIVER, undef, { Directory=>SESSION_LOCATION }); $session->expire('+10s'); ## save new session ## $session->save_param($page, ['userid']); $user{'userid'} = $page->param('userid'); print $session->header(); showInfo("'". $user{userid}. "' is just logged in " . $session->id()); ## if session already expired... } elsif ($session->is_expired()) { printForm("<h1>Please re-login</h1>"); }elsif (!$session->is_empty()) { ## show who is staying... ## $session->load_param($page, ['userid']); $user{userid} = $page->param('userid'); print $session->header(); showInfo("Welcome again ". $user{userid}. "!"); } else { ## first timer... ## printForm("<h1>Login Page</h1>"); } ###------------------ ###------------------ sub showInfo { my $msg = shift; print $page->start_html(), $msg, $page->end_html(); } sub printForm { my $msg = shift; print $page->header(), $page->start_html(), $msg, $page->p, $page->start_multipart_form(), "User id : ", $page->textfield(-name=>'userid', -value=> '', -size=>10, -maxlength=>10), $page->p, $page->submit( -name=>'login', -value=>'Login'), $page->end_form(); $page->end_html(); } --------------------------------- Talk is cheap. Use Yahoo! Messenger to make PC-to-Phone calls. Great rates starting at 1¢/min. |