2011-06-23 5 views
4

私は$_SESSIONの変数に、デフォルトのセッション寿命が設定されているユーザーログインユーザー名が含まれています(24分と思います)。私は、セッションタイムアウトで機能を実行する方法があるのだろうかと思います。phpセッションタイムアウトで機能を実行する方法

ユーザーがページをリロードしてセッション変数の有効期限が切れたときに、関数を実行するようページに指示できますが、サーバーがこれを行う方法を見つけようとしています。そのような方法はありますか?

私の推理:ユーザーがログインすると、私は自分のデータベースに報告し、 'lastlogin'のユーザーレコードを更新します。ユーザーがログアウトをクリックしたときや、$_SESSION変数の有効期限が切れたときに、「lastlogout」を更新したい。

答えて

5

closeおよびgc(ガベージコレクタ)でsession_set_save_handlerの設定コールバックを試してください。

+0

私はこれをまだ試していないが、有望であると思う。 – sadmicrowave

0

あなたはこの方法については、このためにJavaScriptを使用することができます。

<?php 

... 
$currentTimeoutInMillis = ini_get(’session.gc_maxlifetime’) * 1000; 

print "<script type='text/javascript'>\n"; 
print "<!--\n"; 
print "setTimeout('window.location.href=\"timeout.php\"', $currentTimeoutInMillis);\n"; 
print "//-->\n"; 
... 

?> 

タイムアウト時間を使い切った場合次に、あなたのtimeout.phpが自動的に呼び出されます。このスクリプトでは、この時点で、$ _SESSIONのコンテンツはすでに失われています(ガーベジコレクションされています)。また、データベースコールを作成してユーザーのレコードを更新することもできます。

+0

しかし、ユーザーがウィンドウを閉じると、ウィンドウが閉じても機能しません。 – Exos

+0

ウィンドウが閉じていると、Trueを返します。率直に言って、窓が閉じてしまえば何かできることは分かりません。 –

関連する問題