我是新来的PHP和我试图建立一个网站。如果他闲置一段时间,我想注销用户会话。我搜索了网页,但找不到合适的代码。你如何检查用户是否闲置或不在PHP?任何人都可以帮助我。如何注销会话,如果用户空闲在PHP
回答
有几个方法可以做到这一点。这里有一对夫妇...
设置会话终止时间,以便在一段时间后,会话过期并且不再有效。
设置一个“时间”标志作为会话数据,并检查他们的会话仍然是“足够新”,让他们在每个页面加载登录。
我会选择第二个选择,因为它可能很难设置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();
编辑:
你的意见解释说,你实际上是想保持在客户端跟踪鼠标事件和其他的东西来确定如果用户闲置。这更复杂。我会给出一个通用的解决方案,然后提供一些有关优化和改进的建议。
要完成你所描述的东西,你必须跟踪客户方活动(鼠标移动,键盘敲击等)和过程在服务器端信息。
跟踪客户方活动需要JavaScript事件处理程序。你应该为每一个你想要算作“不闲置”的动作创建一个事件处理程序,并且保持它们最后一次闲置的时间(在一个javascript变量中)。
处理是在服务器端信息将要求您使用AJAX送他们最后一次一直闲置到服务器。因此,每隔几秒钟,您应该向服务器发送更新(使用JavaScript),该更新指定用户闲置的时间。
一对额外的建议:
你不应该依赖于这个Ajax解决方案作为唯一的方法来追踪用户活动,因为有些用户将无法启用JS。所以,你也应该跟踪页面载入的用户活动。因此,您可能不应该将空闲时间设置得太低(至少对于非JS用户),因为在发生页面加载之前,非JS用户不会向服务器发送任何数据。
你应该通过AJAX尽可能少地更新发送到服务器关于用户活动的减少服务器上的需求。要做到这一点,只需让javascript跟踪用户何时超时。如果它达到用户即将超时的时间点(比如大约一分钟左右),则然后只有才能ping服务器。
您可以配置PHP的配置为session.cookie_lifetime
,这会在空闲时间量后自动销毁会话。
更多信息可以在这里找到http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime
+1谢谢。我需要将其设置为最大值,然后确保我更频繁地进行轮询。我更新了这个问题,因为我忘记指出我的PHP需要知道超时以更新数据库。 – Mawg 2011-04-30 04:29:31
您可以使用session_cache_expire
,我给你这个例子:
<?php
/* set the cache limiter to 'private' */
session_cache_limiter('private');
$cache_limiter = session_cache_limiter();
/* set the cache expire to 30 minutes */
session_cache_expire(30);
$cache_expire = session_cache_expire();
/* start the session */
session_start();
echo "The cache limiter is now set to $cache_limiter<br />";
echo "The cached session pages expire after $cache_expire minutes";
?>
来源:php.net
+1谢谢。我需要将其设置为最大值,然后确保我更频繁地进行轮询。我更新了这个问题,因为我忘记指出我的PHP需要知道超时以更新数据库。 – Mawg 2011-04-30 04:29:58
- 1. 我如何在PHP如果闲置10分钟,使用会话注销用户
- 2. 注销多个空闲用户
- 3. 如何检测用户闲置一段时间并在PHP中销毁会话?
- 4. 在django中,request.session.set_expiry在闲置后如何用于注销用户?
- 5. PHP会话。管理员如何销毁用户的会话
- 6. 如何结束用户会话并确保用户已注销?
- 7. 在会话到期时注销用户
- 8. 安全注销PHP会话
- 9. 如何在php中注销用户?
- 10. 如何在注销时清除会话
- 11. ASP.NET:如何在用户单击注销时结束会话?
- 12. 如何在会话超时或结束时注销用户
- 13. 如果会话对象为空,MVC强制注销
- 14. PHP登录/注销如果会话超时= true做某事
- 15. 如何使用Twitter Api注销或结束用户会话?
- 16. 当会话超时时注销用户
- 17. 会话超时注销用户
- 18. 用户会话超时强制注销
- 19. 注销和重定向会话在php
- 20. 在会话中注销PHP的问题
- 21. 如何取消设置会话ID以注销用户?
- 22. 如何用户不活动,注销或会话结束
- 23. 会话过期时,如何强制用户注销?
- 24. 如何检测注销asp.net 4会话
- 25. 如何通过htaccess增加php中的空闲会话过期?
- 26. 在django中,如果用户注销,会话数据全部删除吗?
- 27. 如何在用户登录时启动会话并在用户注销时结束会话
- 28. Facebook注销会话
- 29. 注销citrix会话
- 30. 会话注销在asp.net
你也可以使用一个计时器在JavaScript中,将带你到此后的登录页面已启用。 – jtbandes 2010-08-10 22:06:01
incrediman 感谢您的答复。但不检查用户是否闲置,如我们需要检查鼠标事件等。它只是让用户在指定时间后注销。 – sudh 2010-08-10 22:10:37
@sudh:要做到这一点更复杂,并需要JavaScript。我会更新我的答案。 – Cam 2010-08-10 22:13:39