2012-08-08 152 views
2

我需要一种方法来在用户闲置10分钟后自动注销用户。这包括他们何时离开浏览器。实施自动注销

我用这个代码,需要登录的所有页面:

function CheckLogin() 
{ 
    if(!isset($_SESSION)) 
    { 
    session_start(); 

    } 


    $sessionvar = $this->GetLoginSessionVar(); 

    if(empty($_SESSION[$sessionvar])) 
    { 
     return false; 
    } 
    return true; 
} 

而且,以前的方法,我已经做到了是它需要一个返回到主页,然后他们将被自动记录出。他们是否有可能不需要返回页面?

+0

对你有帮助吗?如果是这样,请将其中一个标记为已接受http://stackoverflow.com/faq#howtoask – Tchoupi 2012-09-27 19:58:22

回答

4

是的。 session.gc_maxlifetime正是你在找什么:

ini_set('session.gc_maxlifetime', 600); 

http://www.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime

+0

我会在哪里初始化它?在CheckLogin()中?如何重新登录到注销页面?谢谢! – Kalon 2012-08-08 18:26:58

+0

您的重定向可以通过检查用户是否在每个页面加载时登录并且如果没有重定向来处理。或者你想要一个实时解决方案? – Stieffers 2012-08-08 18:29:18

+0

@KalonCheong我会用我的其他PHP设置/配置选项来调用它。最好在脚本的顶部,但只要在调用'session_start()'之前设置好了,你就会好的。 – Tchoupi 2012-08-08 18:30:20

1

有两种方法可以实现您的超时。一个来自服务器端,另一个来自客户端。可以说服务器端的实现更重要,因为客户端功能只提供更愉快的用户体验,并且实际上并不实际与应用程序的身份验证进行交互。

服务器端

你需要确保用户在登录登录检查功能。你提到你的问题一个伪功能,所以我就从那里展开。

function CheckLogin() 
{ 
     // Is the user logged in? 
     if(session does not exist) 
     { 
      // redirect 
      // redirect or return false 
     } 
     else 
     { 
      if(session is valid) 
      { 
       // user is logged in 
       // redirect or return true 
      } 
      else 
      { 
       // redirect or return false 
      } 
     } 
} 

客户端

你需要jQuery和插件吉姆挂,http://www.erichynds.com/jquery/a-new-and-improved-jquery-idle-timeout-plugin/。创建并链接到一个Javascript文件并将其包含在网站范围内。按照插件链接中的文档。这是相当彻底的。

设置与会话相关的任何cookie(如果有的话)在10分钟后超时也是最有利的。