会话超时后,PHP会话变量仍然存在

时间:2014-07-04 08:07:15

标签: php session timeout session-variables

我正在制作一个webapp并使用会话来保持用户数据。我设置2个变量$ _SESSION [“loged_in”]和$ _SESSION [“user_id”]来知道用户是否已连接。但是当会话达到超时时,变量仍然存在,这会扭曲我的逻辑。我该怎么解决?

1 个答案:

答案 0 :(得分:1)

你确定会话已达到超时吗?

根据您的问题,如果会话仍然存在,我认为会话尚未达到超时。会话有一生。会话生存期可以在名为php.ini

的文件中看到

在该文件中,您可以找到var session.gc_maxlifetime值的会话生存期。 您可以按照以下链接中的步骤设置/更改会话生存期 How to change the session timeout in PHP?

======更新======

  

根据您的评论,可能您还没有创建代码来注销   用户,如果他们尝试在页面处于非活动状态时加载页面   长

你必须在你拥有的每个.php文件中“创建代码来检查会话时间并创建注销代码”。

if( $_SESSION['last_activity'] < time()-$_SESSION['expire_time'] ) { 
    header('Location: http://yoursite.com/logout.php');
} 
else{ 
    $_SESSION['last_activity'] = time(); //this was the moment of last activity.
}