2013-10-04 38 views
0

我使用的Drupal 6的程序,做一些電子支付的工作。由於登錄意味着瀏覽器可以訪問用戶敏感的財務信息,因此我想確保它在非活動期之後會超時。Drupal的會話似乎並不合乎邏輯

我試着使用:

ini_set('session.cookie_lifetime', 600); //expire after 10 minutes of inactivity 

但是這個註銷用戶10分鐘後,無論他們是否有因爲登錄的任何活動。

是否有不同的設置,使用或修改此設置,使會話的方式不活動後過期,而不是有一個硬性的壽命長?

回答

0

Drupal的讓用戶保持登錄狀態。這對你來說可能看起來不合邏輯,但是對於寫大帖子的人來說,或者在停頓之後願意繼續寫作,這很有意義:如果經過漫長的一天的工作,他們會提交自己的帖子並得到一個錯誤,他們可能會感到失望他們的會話已過期。

這就是說,你可以查閱Automated logout模塊,這似乎有可能幫助你與你的應用程序的需求。

+0

我知道我的標題不是最好的。我只是想,drupal的會話計時器將基於不活動而不是絕對時間(即使這是23天的非活動時間以允許大型帖子隨時間分解)。無論如何,感謝你的鏈接,它看起來非常有前途。我會報告,如果它似乎爲我工作。 – BlargleMonster

0

你需要實現自己的解決方案有是剛剛更改設置做它沒有可靠的方法。如果您需要更多信息請查看這個答案How do I expire a PHP session after 30 minutes?

從頂端回答在這個問題摘自:

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) { 
    // last request was more than 30 minutes ago 
    session_unset();  // unset $_SESSION variable for the run-time 
    session_destroy(); // destroy session data in storage 
} 
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp 

而且你想設置:

ini_set('session.cookie_lifetime', 0); 

因此,它永遠不會過期的這除非他們關閉瀏覽器。直到他們登出

+0

做'session_unset();'和'session_destroy();'有效地破壞一個Drupal會話? – BlargleMonster

+0

是的,它破壞了PHP會話。 – Pitchinnate