2017-07-08 42 views
0

但是有很多的PHP的方式來退出應用程序時,用戶使用會話處於閒置狀態,我使用是有可能發現在PHP閒置使用類似甚至鼠標焦點在JavaScript中檢測

同時登錄

$_SESSION['last_activity']=time()+10; 

在頭

$expire_time = 10; //10 secs 
if($_SESSION['last_activity'] < time()-$expire_time) { 
    echo 'session destroyed'; 
} 
else { 
    $_SESSION['last_activity'] = time(); 
} 

此功能將註銷用戶根據用戶點擊或刷新頁面甚至在標籤,但不鼠標事件這是有可能在JavaScript

var IDLE_TIMEOUT = 900; //seconds 
var _idleSecondsCounter = 0; 

document.onclick = function() { 
    _idleSecondsCounter = 0; 
}; 

document.onmousemove = function() { 
    _idleSecondsCounter = 0; 
}; 

document.onkeypress = function() { 
    _idleSecondsCounter = 0; 
}; 

window.setInterval(CheckIdleTime, 1000); 

function CheckIdleTime() { 
    _idleSecondsCounter++; 
    var oPanel = document.getElementById("SecondsUntilExpire"); 
    if (oPanel) 
     oPanel.innerHTML = (IDLE_TIMEOUT - _idleSecondsCounter) + ""; 
    if (_idleSecondsCounter >= IDLE_TIMEOUT) { 
     alert('Times up!, You are idle for about 15 minutes, Please login to continue'); 
     document.location.href = "logout.php"; 
    } 
} 

而且在整個項目或製表符這不會工作,如果用戶保持一個標籤空閒,並在另一個標籤上工作,整個項目將被註銷,有沒有什麼辦法讓這個腳本全局工作或使PHP檢測所有事件。

+0

嘗試使用cookie設置時間,然後使用javascript檢查 – Edwin

+0

? –

+0

負面選民你能否解釋沃茨這個問題的錯誤? –

回答

1

您可以使用JavaScript的本地存儲API

具有本地存儲,Web應用程序可以在用戶的​​瀏覽器本地存儲數據。

在HTML5之前,應用程序數據必須存儲在cookie中,幷包含在每個服務器請求中。本地存儲更安全,大量數據可以存儲在本地,而不會影響網站性能。

與Cookie不同,存儲限制要大得多(至少5MB),並且信息永遠不會傳輸到服務器。

本地存儲是每個來源(每個域和協議)。來自一個來源的所有頁面可以存儲和訪問相同的數據。

var IDLE_TIMEOUT = 900; //seconds 
    sessionStorage.idleSecondCounter = 0; 

document.onclick = function() { 
    sessionStorage.idleSecondCounter = 0; 
}; 

document.onmousemove = function() { 
    sessionStorage.idleSecondCounter = 0; 
}; 

document.onkeypress = function() { 
    sessionStorage.idleSecondCounter = 0; 
}; 

window.setInterval(CheckIdleTime, 1000); 

function CheckIdleTime() { 
    sessionStorage.idleSecondCounter = parseInt(sessionStorage.idleSecondCounter)+1; 
    var oPanel = document.getElementById("SecondsUntilExpire"); 
    if (oPanel) 
     oPanel.innerHTML = (IDLE_TIMEOUT - sessionStorage.idleSecondCounter) + ""; 
    if (sessionStorage.idleSecondCounter >= IDLE_TIMEOUT) { 
     alert('Times up!, You are idle for about 15 minutes, Please login to continue'); 
     document.location.href = "logout.php"; 
    } 
} 

的的sessionStorage對象等於localStorage的對象,不同之處在於它存儲的數據只有一個會話。當用戶關閉特定瀏覽器選項卡時,數據將被刪除。

+0

這也不是跨標籤: –

+0

嘗試'localStorage.setItem('idleSecondCounter',0);'而不是'sessionStorage.idleSecondCounter' –

+0

和PLZ告訴我哪個瀏覽器是你使用 –

相關問題