Php 当用户不执行注销操作而离开应用程序时自动注销
有时,用户没有单击注销按钮就离开应用程序,或者关闭或休眠其计算机,甚至关闭与应用程序域相关的所有会话(页面)。因此服务器无法知道用户已注销!在我们的例子中,我们有一个“上次会话花费的时间”参数来检查每个用户激活的上次会话的时间 我们需要在用户离开应用程序时自动注销,而不执行注销操作!Php 当用户不执行注销操作而离开应用程序时自动注销,php,session,logout,Php,Session,Logout,有时,用户没有单击注销按钮就离开应用程序,或者关闭或休眠其计算机,甚至关闭与应用程序域相关的所有会话(页面)。因此服务器无法知道用户已注销!在我们的例子中,我们有一个“上次会话花费的时间”参数来检查每个用户激活的上次会话的时间 我们需要在用户离开应用程序时自动注销,而不执行注销操作! 有没有一个过程可以做到这一点?你可以做一些类似的事情 一旦用户登录到您的站点,设置一个会话 $\u会话['last\u activity\u recorded']=time() 这将跟踪用户的活动 在每页上,将此会
有没有一个过程可以做到这一点?你可以做一些类似的事情
会话
$\u会话['last\u activity\u recorded']=time()代码>
这将跟踪用户的活动
会话更新为更新时间(即当前时间)
会话之前)
if($_SESSION['last_activity_recorded']
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 600)) {
session_unset();
session_destroy();
}
$_SESSION['LAST_ACTIVITY'] = time();
如果
$\u SESSION['LAST\u ACTIVITY']>600
在过去600秒(10分钟)内没有任何活动,则销毁会话。您可以在服务器上设置一个cron作业来检查过时的会话,但这不是一个很好的解决方案,因为您必须在项目中部署另一个解决方案(cron作业)。
我的方法是在项目中包含一个check_credentials.php文件,该文件在DB连接后立即运行,然后在用户表中为项目用户添加两个字段,分别为:session_id和last_checkin。
该过程将如下所示:
登录:
好的,但是如何通知服务器,即:如果用户没有调用页面,我们如何设置注销时间的值?好的,这很好,很清楚,但是在关闭窗口或关闭后,我们如何通知数据库注销时间,。。。???如果不再调用应用程序的任何页面?