ブラウザ終了時にセッションを削除する

2014年7月1日

認証通過後、ログアウトボタンを押してきちんとログアウト処理を行えれば問題ないのですが、ユーザの中にはログアウトボタンを押さずに、ブラウザをそのまま終了してしまう、もしくはタブブラウザの[x]にてタブを閉じてしまう方がいる。
そういう時はサーバ側にセッション情報が残り続けてしまうので、よろしくない。

そこで、javascriptの「onBeforeUnload」を利用して、ブラウザ終了とタブ閉じを検知して、セッション破棄処理を行う。

<script type="text/javascript">
<!--
function unload() {
    httpObj = new XMLHttpRequest();
    httpObj.open("GET","logout.php",true);
    httpObj.send(null);
}
// ->
</script>
<body onBeforeUnload="unload()">

上記の様に記述。
logout.phpには「session_destroy();」など、セションを破棄するプログラムを作成する。

これにより、ブラウザをそのまま終了してしまう、もしくはタブブラウザの[x]にてタブを閉じられても、その瞬間にlogout.phpが呼び出されて、セッションが破棄されます。
IE、Firefox、chromeにて動作確認実施。
但し、マウスジェスチャーなどでタブを閉じられたら検知は出来ない。