CGI :: Session expire() 함수는 사용자가 지정된 간격 동안 유휴 상태 일 때만 만료됩니다. 내가 유휴 상태에 있다고 가정 할 때 사용자가 페이지를 새로 고치지 않았거나 다른 사용자에게 액세스하지 못했음을 의미합니다.CGI :: Session은 일정한 간격 후에 어떻게 만료됩니까?
delete()를 사용하여 세션의 만료를 강제 할 수 있지만, 유휴 상태인지 여부에 관계없이 세션이 자동으로 만료되도록 강제하는 방법이 있습니다.
아마도 이것이 바람직한 사용자 경험이 아니지만, 시간 간격을 추적하거나 추가 라이브러리를 사용하지 않고도이를 수행 할 수있는 방법이 있습니까?
세션이 만료 될 때 새로운 세션을 반환하면 CGI :: Session :: is_expired의 요점은 무엇입니까? 적어도 내가이 문서에서 내 스크립트
sub build_sss{
my($this) = shift;
$cgi = $this->cgi_obj();
my $sid = $this->sid();
my $sss = CGI::Session->load(undef, $cgi, {Directory=>'tmp'}) or die CGI::Session->errstr();
#check expired session
if ($sss->is_expired()) {
my $expired_url = $ENV{'SCRIPT_URI'}.'?expired='.$sid;
$this->session_status("SESSION_EXPIRED");
print $cgi->redirect($expired_url); #when expired param is set shows a msg
}
#check if empty create new
if ($sss->is_empty()) {
$sss = $sss->new() or $sss->errstr;
$this->session_status("SESSION_NEW");
$sss->expire('30s');
$sss->expire(_TEST_SUB_SESSION => '15s');
}
return $sss;
}
아니요 세션이 비어 있으면 아니오, 비어 있으면 현재 세션이로드 됨 – qodeninja