【问题标题】:Implementing auto logout实现自动注销
【发布时间】:2012-08-08 18:20:55
【问题描述】:

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

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

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

     }


     $sessionvar = $this->GetLoginSessionVar();

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

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

【问题讨论】:

标签: php javascript html web-applications


【解决方案1】:

是的。 session.gc_maxlifetime 正是您要找的:

ini_set('session.gc_maxlifetime', 600);

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

【讨论】:

  • 我应该在哪里初始化它?就在 CheckLogin() 中?如何重定向到注销页面?谢谢!
  • 您的重定向可以通过检查用户是否在每次页面加载时登录并如果没有则重定向来处理。还是您想要一个实时解决方案?
  • @KalonCheong 我会用我的其他 PHP 设置/配置选项来调用它。最好在脚本的顶部,但只要在调用 session_start() 之前设置它就可以了。
  • @Stieffers 有没有实时的重定向解决方案?
  • @KalonCheong 我认为你在一些错误的假设下工作。如果您导航到 Google 10 分钟然后返回该页面,您将发出另一个服务器端请求,这意味着您的会话已经在后端过期,导致重定向。 jQuery 插件发挥作用的唯一方法是,如果您在页面上打开了一个非活动的浏览器窗口/选项卡 10 分钟。十分钟后,插件可以刷新页面或其他任何内容,从而创建另一个后端请求,将您注册为已注销(因为已经 10 分钟)。
【解决方案2】:

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

服务器端

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2010-10-17
      • 2014-05-26
      • 2012-09-23
      • 2016-04-13
      • 1970-01-01
      • 2011-07-19
      • 2020-01-21
      • 2012-06-04
      • 1970-01-01
      相关资源
      最近更新 更多