2012-08-08 143 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分鐘後超時也是最有利的。