实现自动注销

Implementing auto logout

本文关键字:注销 实现      更新时间:2023-09-26

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

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

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

     $sessionvar = $this->GetLoginSessionVar();
     if(empty($_SESSION[$sessionvar]))
     {
        return false;
     }
     return true;
}

此外,我以前的做法是需要返回主页,然后它们将自动注销。他们是否可能不需要返回页面?

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

ini_set('session.gc_maxlifetime', 600);

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

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

服务器端

您需要一个登录检查功能来确保用户已登录。 您在问题中提到了伪函数,所以我将从那里展开。

 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 分钟后超时也符合您的最佳利益。

还有一个

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