我是php新手,我正在尝试建立一个网站.如果他闲置了一段时间我想退出用户会话.我在网上搜索但我找不到合适的代码.如何在php中检查用户是否空闲?任何人都可以帮助我.
Cam*_*Cam 12
有几种方法可以做到这一点.这是一对......
设置会话到期时间,以便在一定时间后,会话到期并且不再有效.
将'time'标志设置为会话数据,并检查它们的会话是否仍然"足够新"以保持它们记录在每个页面加载中.
我会选择第二种选择,因为很难在PHP中设置正确的值,以便会话安全到期,以及您希望的方式.使用第二个选项,您所要做的就是确保会话在您想要之前不会过期,这更容易.
选项2的代码示例:
//on pageload
session_start();
$idletime=60;//after 60 seconds the user gets logged out
if (time()-$_SESSION['timestamp']>$idletime){
session_destroy();
session_unset();
}else{
$_SESSION['timestamp']=time();
}
//on session creation
$_SESSION['timestamp']=time();
Run Code Online (Sandbox Code Playgroud)
编辑:
您的评论说明您实际上想要跟踪客户端上的鼠标事件和其他事情,以确定用户是否处于空闲状态.这更复杂.我将给出一个通用的解决方案,然后提供一些优化和改进的建议.
要完成您所描述的内容,您必须跟踪客户端活动(鼠标移动,键盘敲击等)并在服务器端处理该信息.
跟踪客户端活动将需要javascript事件处理程序.您应该为每个要计为"非空闲"的操作创建一个事件处理程序,并跟踪(在javascript变量中)它们上次空闲时间.
在服务器端处理该信息将要求您使用ajax将它们最后一次空闲时发送到服务器.因此,每隔几秒钟,您应该向服务器发送一个更新(使用javascript),该更新指定用户空闲的时间.
一些额外的建议:
您不应该依赖此ajax解决方案作为跟踪用户活动的唯一方法,因为某些用户不会启用JS.因此,您还应该跟踪页面加载时的用户活动.因此,您可能不应将空闲时间设置得太低(至少对于非JS用户而言),因为非JS用户在发生页面加载之前不会向服务器发送任何数据.
您应该尽可能不经常地通过ajax向服务器发送有关用户活动的更新,以减少对服务器的需求.要做到这一点,只需让javascript跟踪用户何时超时.如果它到达用户即将超时的程度(比如大约一分钟左右),那么只有 ping服务器.
| 归档时间: |
|
| 查看次数: |
19864 次 |
| 最近记录: |