• 締切済み

ブラウザを閉じた時にサブルーチンを実行したい

会員制サイトを構築しようとしています。 通常はログイン→ログアウトの手順を踏むのですが、 それをせずにブラウザの閉じる(×)ボタンで終了された時に ある処理(サブルーチン)を実行させることは可能なのでしょうか? データベースにその旨のフラグを立てて保存したいのです。 可能でしたらその方法を、もしPerlでは不可能なら他に方法はないかご教授下さい。 宜しくお願い致します。

みんなの回答

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.1

閉じるのはクライアント側で、しかもクライアントからは閉じたことは通知されないので無理です。 どうしてもということなら、JavaScriptで onBeforeUnloadを使って event.clientX<0 なら「DBに保存して終了します」みたいなダイアログを出して、閉じる ことくらいかな? でも基本的に、回線が切れるかもしれないし、停電等でクライアントが止まるかもしれないし、 [x]で閉じられたら・・・みたいなチェック は実際には無意味なので、しないですむ方法を考えた方がいいですよ。

garuma35
質問者

お礼

ご回答ありがとうございます。 やはり無理でしたか・・・ JavaScriptはウィンドウ関連しかまだ良くわからないので、もっと勉強が必要ですね。 実際に何がしたいかというと、ログイン~ログアウト時間をDBで管理するのですが、 ログアウト処理をせずにブラウザが閉じられた(もしくは強制終了された)時にそれまで何秒間アクセスされたかを保存できないか? と。 例えば、一定時間ごと(60秒とか)に、そのDBを書き換えるサブルーチンを呼び出すことはPerlで実現可能ですか? (METAタグのrefreshはタイムアウト処理で使ってしまっております) JavaScriptに「setInterval」がありますが、それを使うしか方法がないでしょうか? 宜しくお願い致します。

関連するQ&A

専門家に質問してみよう