サーバー側のタイムアウトについてはすでに説明したので、ここで私の答えを少し修正します…。
クライアント側で実行できる唯一のことは、onbeforeunloadイベントを使用してログアウトページを呼び出すことです(ユーザーがドキュメント内のリンクをクリックしなかった場合)。
残念ながら、ブラウザの[戻る]、[進む]、[更新]ボタンを押すと、ログアウトが発生します...
これを回避するには、logout.php(自動ログアウトページ)を20〜30秒間スリープさせてから、最後のインプレッションがログアウトする前の30〜45秒…</ p>
これをドキュメントの先頭にあるスクリプトタグに追加し、「logout.php」を任意の名前に変更します… * リンク以外のものを使用する場合は、window.onload関数を編集してonclickハンドラーを正しく追加する必要がある場合もあります。ナビゲートするには…。
var xmlhttp=false; var target; var combo;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } }
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
var dologout = true;
var logouturl = 'logout.php';
window.onbeforeunload = function() {
if (dologout) {
xmlhttp.open("POST", logouturl, true);
xmlhttp.send(null);
}
}
window.onload = function() {
for (i=0;i<document.links.length;i++)
document.links[i].setAttribute("onclick","dologout = false;");
}
基本的に、これはonclickイベントをすべてのdocument.linksに添付し、ドキュメントリンクがクリックされた場合は「dologout」フラグをfalseに変更します...
onbeforeunloadイベントが発生したときにdologoutフラグがtrueの場合、「logouturl」/「logout.php」に投稿が送信されます...