Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP会话变量在会话超时后仍然存在_Php_Session_Timeout_Session Variables - Fatal编程技术网

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

PHP会话变量在会话超时后仍然存在,php,session,timeout,session-variables,Php,Session,Timeout,Session Variables,我正在制作一个网络应用程序,并使用会话来记录用户数据。我设置了两个变量$\u SESSION[“loged\u in”]和$\u SESSION[“user\u id”],以了解用户是否已连接。但是当会话到达超时时,变量仍然存在,这扭曲了我的逻辑。如何解决此问题?您确定会话已达到超时吗 根据您的问题,如果会话仍然存在,我认为会话尚未达到超时。会话有一生的时间。会话生存期可以在名为php.ini的文件中看到吗 在该文件中,您可以在var session.gc_maxlifest的值中找到会话生存期

我正在制作一个网络应用程序,并使用会话来记录用户数据。我设置了两个变量$\u SESSION[“loged\u in”]和$\u SESSION[“user\u id”],以了解用户是否已连接。但是当会话到达超时时,变量仍然存在,这扭曲了我的逻辑。如何解决此问题?

您确定会话已达到超时吗

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

在该文件中,您可以在var session.gc_maxlifest的值中找到会话生存期的长度。 您可以按照以下链接中的步骤设置/更改会话生存期

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

根据您的评论,可能您还没有创建代码来注销 用户,如果他们试图加载一个页面时,他们已经不活动了太长时间 长的

您必须在每个.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.
}
if($\u SESSION['last\u activity']
可能会有一些启发。你需要显示两个以上的变量,我可以想象,任何真正的“逻辑”都要解决:)你需要在会话中存储超时值。如果您没有在选择的值之后清除会话,
session.gc\u maxlife
最终将为您完成。请详细说明您的答案并提供参考,以便OP理解。我确信,因为我使用了
session\u cache\u expire(1)
session\u cache\u limitor(“public”)
以便会话在一分钟后过期。但是,即使你是对的,并且会话没有超时,为什么在一段不活动的时间之后,会话变量不包含它应该包含的内容呢?例如,我使用“$\u SESSION[“user\u id”]”来显示与用户相关的数据,但它显示了一些错误,或者某些东西没有出现,但我很惊讶没有像应该的那样重定向到登录页面,只有在我注销时,会话才明显被破坏,注销链接只调用
SESSION\u destroy()
@Xsmael可能是,如果用户在长时间不活动的情况下试图加载页面,您还没有创建代码来注销用户。我已经编辑了我的回答,当然我没有想过,如果用户在超时之前处于非活动状态。会话将自动销毁。这就是会话应该起作用的方式不?我错了吗?@Xsmael你是对的。。但当然,您必须在每个.php文件中“创建代码以检查会话时间并创建代码以注销”。