回答
你也可以這樣做:
$_SESSION['loginTime'] = time();
在每一個頁面,當用戶試圖瀏覽和他一直處於非活動狀態20分鐘您可以登錄他出來是這樣的:
if($_SESSION['loginTime'] < time()+20*60){ logout(); }
根據您的服務器的速度和您擁有的用戶數量,您可以在用戶執行任何操作(導航,單擊按鈕等等)時向您的服務器發送請求。根據此請求,使用上次活動時間更新SQL表。
讓cron作業在某個固定的時間間隔運行,並刪除那些無論您的閾值是否處於非活動狀態的用戶的會話。
如果你的服務器速度很慢或者你有很多用戶,你可以讓這個腳本很少運行。
使用unset($_SESSION['NAME']);
或session_destroy();
。您也可以更改會話的值。
要在特定時間執行此操作,您需要在數據庫中設置時間戳,然後調用它來檢查它是否超出X分鐘。看看底部的鏈接。
我個人只是使用cookie,並使它們在某個特定時間到期,但無論漂浮在您的船上。
If current time is more than 30 seconds past time X (from the database)
根據不活動超時,PHP的會話機制已經有一個垃圾收集器。你不用擔心。
有點誤導 - 垃圾收集與會話被禁用時無關 - 只有數據被清除的時間(以後)。答案是會話的生命週期(令人困惑的是前綴爲gc_) – symcbean 2010-06-18 11:57:01
我累Michiels的方法,並沒有得到的地方。 在調查中,我看到if語句簡單地將到期時間添加到當前時間,所以從未聲明該語句。
這是我修改過的版本:
集這在用戶登錄或加載安全頁面時:
$_SESSION['expire'] = time()+1*60;
,並以此來查看是否過期時間小於當前時間(即我們「再過去的有效期限):
if(time() > $_SESSION['expire']){
$user -> logout();
}
$(文件)。就緒(函數()
{
setTimeout(function(){CALL LOGOUT。PHP VIA AJAX},720000);
});
720000意味着12分鐘(用於說明目的)
把這個腳本在你的頭,並設置UR自己的閒置
可以設置時間ü想,它會像 工作,如果你設置5什麼時候分鐘然後當你登錄系統,然後開始計數5分鐘。但是如果你點擊任何模塊,這個腳本將被重新加載,因爲當頁面轉動的時候,當腳本被重新加載時,頭也被重新加載,然後它從0開始計數(初始),但是如果你不能在5分鐘內訪問系統。那麼它將加載logout.php並且系統將註銷
您可以通過$ _SESSION ['lastactive'] = time()設置上次活動時間,並在用戶每次導航到新頁面時更新它。然後你可以在每個頁面上都有一個函數timeout()。
function timeout()
{
$maxtime = 60*2; // Here , maxtime has been set to 2 minutes
if(isset($_SESSION['lastactive']) and (time() - $_SESSION['lastactive'] > $maxtime)) // subtracting current time from lastactive time and seeing if it exceeded timeout limit.
{
signout(); //logging out
}
if(isset($_SESSION['lastactive']) and (time() - $_SESSION['lastactive'] < $maxtime)) // subtracting current time from lastactive time and seeing if it exceeded timeout limit.
{
return 1; // timeout limit not exceeded
}
else
{
if(!isset($_SESSION['lastactive']))
{
$_SESSION['lastactive'] = time(); //if lastactive is not set
}
}
}
這是我要做的事:
//set timeout period in seconds
$idleTime= 60*2;
//check to see if $_SESSION['timeout'] is set
if(isset($_SESSION['timeout'])){
$session_life = time() - $_SESSION['timeout'];
if($session_life > $idleTime){
// your logout code here*
}
}
$_SESSION['timeout'] = time();
這使得$ _SESSION [「超時」]重置每一個頁面重新加載的時候,我在每頭有這個包含文件子頁面,爲我工作至少。
最簡單的方法是這樣的。發送用戶在註銷頁面,如果他們不能在你的網站激活某些元素重定向
$secondsWait = 300; // these are seconds so it is 300s=5minutes
header("refresh:$secondsWait; logout.php");
內容... logout.php,摧毀任何會議,也許還發送一條消息,提醒用戶他們爲什麼已註銷
<?php
session_start();
session_unset();
session_destroy();
?>
- 1. 註銷活動用戶
- 2. 強制非活動用戶註銷
- 3. Javascript - 非活動用戶註銷
- 4. 如何自動註銷CMS中的非活動用戶PHP
- 5. 自動註銷用戶後#分鐘不活動
- 6. 註銷時註銷所有活動
- 7. 使用zend框架12小時不活動後註銷用戶
- 8. 如何用戶不活動,註銷或會話結束
- 9. Android - 註銷所有活動
- 10. PHP自動註銷
- 11. 如何在註銷時銷燬活動?
- 12. FB.logout()不註銷Facebook用戶
- 13. 註銷JS SDK不會註銷PHP SDK
- 14. PHP註銷不起作用
- 15. 如何使用活動從Facebook註銷
- 16. 由於用戶不活動而在Silverlight和wcf中實現自動註銷
- 17. Thinktecture隱式流:註銷/註銷用戶
- 18. Kentico 10以前註銷的用戶記錄的聯繫活動
- 19. 遠程和以編程方式註銷活動域用戶
- 20. 防止用戶導航到活動註銷
- 21. 註銷所有活動用戶在特定時間在asp.net
- 22. SQL返回尚未註銷的活動用戶
- 23. Zend Framework 2 Doctrine身份驗證註銷非活動用戶
- 24. 當用戶從Facebook註銷時自動註銷
- 25. PHP將用戶完全註銷掉
- 26. PHP - 防止用戶被註銷
- 27. 如何在php中註銷用戶?
- 28. Aurelia不活躍註銷應用程序
- 29. Braintree註銷用戶
- 30. Laravel用戶註銷
這根本不是一個有效的解決方案。 – DannyG 2014-05-21 13:57:13