- 締切済み
ブラウザを閉じた瞬間にログアウト
セッション・クッキーを使用せずに『ブラウザを閉じた瞬間に(強制的に)ログアウトさせる』 方法はありますでしょうか? 現在の処理方法はMySQLでflagを立てて処理 flag = '1' なら ログイン中… flag = '0' なら ログアウト 処理させたい内容 『ブラウザを』 → 『閉じた』 → 強制ログアウト実行 → 『開いたまま』 → まだログイン中にさせておく アドバイスよろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- hisappy
- ベストアンサー率46% (184/392)
記述されていない部分の仕様に絡んでくるので なんともいえませんが、 hiddenタグでセッション情報(アクセスID?)を持たせておくことで、 アクセス(リアルタイムに通信)している時だけログイン状態、 それ以外はログアウト状態としてみるのはどうでしょう? ただそれでは、器用な人だと偽装できたりするので 最終アクセス時刻とアクセスIDの突合チェックなども 導入してセキュリティ面の強化も必要になりそうです。 その際には、アクセスIDもアクセスの都度変わるといった 一見余計な処理も加わってしまうことになります。 ひとまず、そういう考え方もありますよという 逆の見方からのお話でした。
- deadlock
- ベストアンサー率67% (59/87)
JavaScriptを使っていいのであれば、Bodyタグのonunload属性にログアウト用リクエスト送出のロジックを書いておく手もありますが… JavaScriptがOffにされていると無力ですからあまりオススメできませんね。 ブラウザ側にログアウト処理を強制できたとしても、ブラウザが強制終了されたりネットワークの切断があったりすると意味がなくなってしまいます。 どんな手を使うにしても、一定時間アクセスのない人をログアウトさせる処理を定期的に走らせる必要があります。
補足
JavaScriptは使用いたしません。ページ間の移動が入ると処理仕切れなくなるからです。 php側のセッション・クッキー処理だと、ページ間移動に対して有効です。が…ここで頭を悩ませているのが時間の処理です。 例>1時間の処理だと setcookie("login",$in,time()+1*60*60); ご指摘のあるように >どんな手を使うにしても、一定時間アクセスのない人をログアウトさせる処理を定期的に走らせる必要があります。 ここでいう "一定時間" = (極端に)1秒にさせたとします。 1秒 = すぐにログアウト ・セキュリティ面は向上するが、使い勝手が悪くなる >定期的に走らせる には、どういった処理が有効なんでしょうか? 補足よろしくお願い致します。
- LancerVII
- ベストアンサー率51% (1060/2054)
ブラウザをユーザが閉じるという行為をサーバ側では 知るすべが無いので難しいと思います。
補足
では、教えてgooはどう処理しているのでしょうか? URLを見る限りではphpで処理しているように見えるのですが…。
お礼
ご指摘のとおりhiddenタグはセキュリティ面が甘くなるので仕様から外しております。