2

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

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

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

     }


     $sessionvar = $this->GetLoginSessionVar();

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

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

4

3 回答 3

4

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

ini_set('session.gc_maxlifetime', 600);

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

于 2012-08-08T18:24:18.710 回答
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 分钟后超时也符合您的最佳利益。

于 2012-08-08T19:01:36.070 回答
0

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

于 2012-08-08T18:27:28.633 回答