2017-07-26 3 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- minutesutes ) – 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を保つには、リダイレクトindex?stayedToLong=yesからindex.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; 
} 

のようなPHPの何かにこの

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'; 
} 
関連する問題