有时,用户在不点击退出按钮的情况下离开应用程序,或关闭或休眠其机器,甚至关闭与应用程序域相关的所有会话(页面)。所以服务器无法知道用户已经注销了!如果我们的情况,我们有“在上次会话上花费的时间”参数来检查为每个用户激活的上次会话的时间。
我们需要在离开应用程序时自动注销用户而不执行注销操作! 有什么过程吗?
提前谢谢。
答案 0 :(得分:1)
您可以在服务器上设置cron作业以检查过时的会话但是这不是一个很好的解决方案,因为您必须在项目中部署另一个解决方案(cron作业)。 我这样做的方法是在项目中包含一个check_credentials.php文件,该文件在数据库连接后立即运行,然后在用户表中为项目用户添加两个字段: session_id AND的 last_checkin 即可。 这个过程将如下工作:
登录:
然后,您可以让所有用户在每个页面请求中进行陈旧的会话检查:
页面查询:
答案 1 :(得分:0)
你可以做点什么,
用户登录您的网站后设置session
。
$_SESSION['last_activity_recorded'] = time();
这会跟踪用户的活动
在每个页面上将此session
更新为更新时间(即当前时间)
检查用户是否不活动(此处为30分钟)并采取必要步骤取消设置登录凭据(在更新每页顶部的session
之前)
if($_SESSION['last_activity_recorded'] < time()+30*60){ session_unset();
session_destroy(); }
答案 2 :(得分:0)
试试这个:
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 600)) {
session_unset();
session_destroy();
}
$_SESSION['LAST_ACTIVITY'] = time();
如果$_SESSION['LAST_ACTIVITY'] > 600
在最后600秒(10分钟)内没有活动,则销毁会话。