回答
你也可以这样做:
$_SESSION['loginTime'] = time();
在每一个页面,当用户试图浏览和他一直处于非活动状态20分钟您可以登录他出来是这样的:
if($_SESSION['loginTime'] < time()+20*60){ logout(); }
根据您的服务器的速度和您拥有的用户数量,您可以在用户执行任何操作(导航,单击按钮等等)时向您的服务器发送请求。根据此请求,使用上次活动时间更新SQL表。
让cron作业在某个固定的时间间隔运行,并删除那些无论您的阈值是否处于非活动状态的用户的会话。
如果你的服务器速度很慢或者你有很多用户,你可以让这个脚本很少运行。
使用unset($_SESSION['NAME']);
或session_destroy();
。您也可以更改会话的值。
要在特定时间执行此操作,您需要在数据库中设置时间戳,然后调用它来检查它是否超出X分钟。看看底部的链接。
我个人只是使用cookie,并使它们在某个特定时间到期,但无论漂浮在您的船上。
If current time is more than 30 seconds past time X (from the database)
根据不活动超时,PHP的会话机制已经有一个垃圾收集器。你不用担心。
有点误导 - 垃圾收集与会话被禁用时无关 - 只有数据被清除的时间(以后)。答案是会话的生命周期(令人困惑的是前缀为gc_) – symcbean 2010-06-18 11:57:01
我累Michiels的方法,并没有得到的地方。 在调查中,我看到if语句简单地将到期时间添加到当前时间,所以从未声明该语句。
这是我修改过的版本:
集这在用户登录或加载安全页面时:
$_SESSION['expire'] = time()+1*60;
,并以此来查看是否过期时间小于当前时间(即我们“再过去的有效期限):
if(time() > $_SESSION['expire']){
$user -> logout();
}
$(文件)。就绪(函数()
{
setTimeout(function(){CALL LOGOUT。PHP VIA AJAX},720000);
});
720000意味着12分钟(用于说明目的)
把这个脚本在你的头,并设置UR自己的闲置
可以设置时间ü想,它会像 工作,如果你设置5什么时候分钟然后当你登录系统,然后开始计数5分钟。但是如果你点击任何模块,这个脚本将被重新加载,因为当页面转动的时候,当脚本被重新加载时,头也被重新加载,然后它从0开始计数(初始),但是如果你不能在5分钟内访问系统。那么它将加载logout.php并且系统将注销
您可以通过$ _SESSION ['lastactive'] = time()设置上次活动时间,并在用户每次导航到新页面时更新它。然后你可以在每个页面上都有一个函数timeout()。
function timeout()
{
$maxtime = 60*2; // Here , maxtime has been set to 2 minutes
if(isset($_SESSION['lastactive']) and (time() - $_SESSION['lastactive'] > $maxtime)) // subtracting current time from lastactive time and seeing if it exceeded timeout limit.
{
signout(); //logging out
}
if(isset($_SESSION['lastactive']) and (time() - $_SESSION['lastactive'] < $maxtime)) // subtracting current time from lastactive time and seeing if it exceeded timeout limit.
{
return 1; // timeout limit not exceeded
}
else
{
if(!isset($_SESSION['lastactive']))
{
$_SESSION['lastactive'] = time(); //if lastactive is not set
}
}
}
这是我要做的事:
//set timeout period in seconds
$idleTime= 60*2;
//check to see if $_SESSION['timeout'] is set
if(isset($_SESSION['timeout'])){
$session_life = time() - $_SESSION['timeout'];
if($session_life > $idleTime){
// your logout code here*
}
}
$_SESSION['timeout'] = time();
这使得$ _SESSION [“超时”]重置每一个页面重新加载的时候,我在每头有这个包含文件子页面,为我工作至少。
最简单的方法是这样的。发送用户在注销页面,如果他们不能在你的网站激活某些元素重定向
$secondsWait = 300; // these are seconds so it is 300s=5minutes
header("refresh:$secondsWait; logout.php");
内容... logout.php,摧毁任何会议,也许还发送一条消息,提醒用户他们为什么已注销
<?php
session_start();
session_unset();
session_destroy();
?>
- 1. 注销活动用户
- 2. 强制非活动用户注销
- 3. 远程注销非活动用户
- 4. 如何自动注销CMS中的非活动用户PHP
- 5. 自动注销用户后#分钟不活动
- 6. 如何用户不活动,注销或会话结束
- 7. 注销JS SDK不会注销PHP SDK
- 8. 由于用户不活动而在Silverlight和wcf中实现自动注销
- 9. Kentico 10以前注销的用户记录的联系活动
- 10. 防止用户导航到活动注销
- 11. 远程和以编程方式注销活动域用户
- 12. 注销所有活动用户在特定时间在asp.net
- 13. asp.net c#MVC 5-注销活动目录用户
- 14. 当用户从Facebook注销时自动注销
- 15. 如何在php中注销用户?
- 16. PHP - 防止用户被注销
- 17. 注销 - Taleo用户
- 18. Sharepoint用户注销
- 19. MVC 5用OWIN自动注销用户
- 20. 如何注销,并不能正常注销用PHP?
- 21. 在N分钟不活动后,将用户从Django站点注销
- 22. 注销用户自动在WordPress博客
- 23. 自动注销用户在Android的
- 24. php注销不工作
- 25. 我注销Android Studio后杀死活动
- 26. 用户注销时主机不可用
- 27. 用户自动注销(PHP会话问题)
- 28. PHP注销
- 29. 如何检测自动注销的不活动?
- 30. 用于注销用户
这根本不是一个有效的解决方案。 – DannyG 2014-05-21 13:57:13