2017-07-26 80 views
0

我公司開發的人員記錄系統爲我公司的。我面臨的問題是員工離開他們的系統登錄,甚至忘記註銷。我希望系統在系統閒置10分鐘後註銷用戶。我幾乎不知道如何去做。我需要你的幫助倒計時註銷申請

+1

每次頁面加載時都會啓動一個javascript倒數計時器。如果定時器打開特定時間,則重定向到註銷頁面以清除會話變量。如果用戶切換頁面,javascript定時器應該重新開始。如果你有很多使用javascript完成的頁面操作,頁面永遠不會被重新加載,在這種情況下,使頁面上運行的任何函數也啓動計時器,可能會有問題。 – GrumpyCrouton

+2

將會話過期設置爲從上次刷新後的X分鐘開始。 – mkaatman

+2

看看這裏[如何過期後30分鐘PHP的會話?](https://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes ) – q81

回答

-3

有一對夫婦的方法在這裏。首先,您的服務器應在一段時間過後清除會話。您的服務器還應該有一些刷新該會話的方式,通常是某種僅通過刷新會話保持活動狀態的api端點。

在與該組合,以避免您的服務器會話已結束,但你的前端會話還沒有,你要在JavaScript中使用一個計時器,請求會話值每隔幾分鐘的問題。如果這屆會議曾經返回不活動,那麼你會想要麼顯示一個模式或彈出允許用戶繼續他們的會話或者你只想把它們自動重定向到一個頁面,告訴他們的會話已過期的用戶。

在JavaScript的解決方案可能類似於以下。

function confirmSessionRefresh(){ 
    if(confirm('Your session will expire in 1 minute. Click Ok to continue or cancel to log out in 1 minute.')){ 
     fetch('/api/refreshsession'); 
     setTimeout(confirmSessionRefresh, 540000); 
    } 
} 

setTimeout(confirmSessionRefresh, 540000); // 9 minutes (to allow 1 minute to respond to the prompt. 
+0

我覺得這樣更適合作爲評論而不是回答。 – GrumpyCrouton

+0

另外,不是我downvote。 – GrumpyCrouton

+0

您需要考慮關鍵筆劃等頁面活動。 –

1

我已經構建了類似於您在過去使用jQuery Idle實現的功能。它檢測到鼠標和鍵盤活動,並且只在用戶真正處於非活動狀態時超時。

https://github.com/kidh0/jquery.idle

例子:

$(document).idle({ 

    onIdle: function(){ 
    windlow.location.href = '/logout.php'; 
    }, 
    idle: 10000 
}) 
1

您可以使用這種代碼。

<!-- //for 10 minutes // the easiest one!--> 
<meta http-equiv="refresh" content="600;url=logout.php" /> 

請牢記logout.php需要在PHP類似

session_start(); 

//measure the time 
$_SESSION['loggedTime'] = time(); 


//10 minutes 
if($_SESSION['loggedTime'] < time()+10*60) 
{ 
    session_destroy(); 

    unset($_SESSION); 

    header("Location: 'index.php?stayedToLong=yes'); 
    exit; 
} 

在index.php頁面從重定向index?stayedToLong=yes這樣

session_start(); 
session_destroy(); 
unset($_SESSION); 
header("Location: 'index.php?stayedToLong=yes'); 
exit; 

或會話一些代碼,你可以像這樣顯示頁面。

if(isset($_GET['stayedToLong']) && $_GET['stayedToLong']=='yes') 
{ 
    echo 'You have are disconnected after 10 minutes'; 
}