实施自动注销

时间:2012-08-08 18:20:56

标签: php javascript html web-applications

我需要一种在10分钟不活动后自动注销用户的方法。这包括他们离开浏览器的时间。

我将此代码用于需要登录的所有页面:

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

     }


     $sessionvar = $this->GetLoginSessionVar();

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

此外,我以前做过的方法是需要一个人回到主页,然后他们会自动注销。是否有可能他们不需要返回页面?

3 个答案:

答案 0 :(得分:4)

是。 session.gc_maxlifetime正是您所寻找的:

ini_set('session.gc_maxlifetime', 600);

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

答案 1 :(得分: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,并且插件Jim链接到http://www.erichynds.com/jquery/a-new-and-improved-jquery-idle-timeout-plugin/。创建并链接到Javascript文件并将其包含在网站范围内。请按照插件链接中的文档进行操作。这是相当彻底的。

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

答案 2 :(得分:0)

还有一个名为空闲超时的JQuery插件,效果很好。设置两个或三个参数,包括超时时发送人员的位置。这是链接http://www.erichynds.com/jquery/a-new-and-improved-jquery-idle-timeout-plugin/