• 締切済み

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

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

  • ブラウザを閉じたときにログアウト処理を実行するには

    お世話になっております。 これから会員制サイトを運営する予定です。 ユーザにはログアウトボタンからのログアウトを促すつもりですが、 ブラウザの閉じるボタン(右上の×)をクリックして閉じる方もいるのではと想定しています。 閉じるボタンをクリックしたときにもログアウト処理を実行したいのですが、何か方法はあるのでしょうか? 宜しくお願いします。

  • ブラウザを閉じた瞬間にログアウト

    セッション・クッキーを使用せずに『ブラウザを閉じた瞬間に(強制的に)ログアウトさせる』 方法はありますでしょうか? 現在の処理方法はMySQLでflagを立てて処理 flag = '1' なら ログイン中… flag = '0' なら ログアウト 処理させたい内容 『ブラウザを』 → 『閉じた』    → 強制ログアウト実行          → 『開いたまま』 → まだログイン中にさせておく アドバイスよろしくお願い致します。

    • 締切済み
    • PHP
  • My Sqlのデータベースを扱うサブルーチン

    はじめてMy SQLで開発しようと考えています。 いままでテキストファイルでした。 &reamfile; foreach @txt{  処理 } &writefile; とテキストファイルの読み込み書き込みはすべてサブルーチンを 利用していましたので楽でした。 これに代わるサブルーチンで開発することは可能でしょうか? 今後の流れは &データベース接続 ↓ &読み込み ↓ &データベース切断 ↓ 処理 ↓ &書き込み というサブルーチンであっていますよね? もしできましたらそんな便利なサブルーチンのスクリプトを 教えてください。 また、テーブルの作成はサーバーのPhpMyAdminでもできるんですが、 Perlスクリプト&SQLで作成しておいた方がよいでしょうか?

  • JSP+Beansによるブラウザの戻るボタンの制御

    はじめまして、だふぱんと申します。 さて、JSP+JavaBeansによるWebアプリケーションを構築しています。 ログイン部の構築が完了したのですが、 ログイン画面→ログイン中→ログアウト→ログイン画面 (ログイン中はクラスでデータを保持、ログアウトでデータを破棄する) といった感じになるのですが、 ログアウトした後にブラウザの戻るボタンを押すと、 画面がログインしているときの状態になってしまいます。 ブラウザのキャッシュを消してみたんですが、 ブラウザによって制御がうまくいかない、 という問題点がでてきてしまいました。 できましたら、ご教授願います。 よろしくお願いします。m(_ _)m

    • ベストアンサー
    • Java
  • 自動ログアウト方法を教えてください。

    現在動いているシステムに、新たに複数ログイン禁止の設定を追加したいと考えています。 それで、以下の流れでシステムを作成しようと考えています。 (1)フラグ設定用のファイルを用意して、ログインした時にファイルへフラグを立てる。 *データベースを使用できないので、ファイルを使用。 (2)フラグが立っていれば、それ以降のログインを禁止にする。 (3)フラグが立っていなければ、ログインを許可する。 *この時、ログイン情報をセッション変数に保存する。 (4)ログアウトする時に、ファイルに持たせているフラグを消去する。 *この時、ログイン情報をセッション変数から削除する。 (5)ログアウトせずに放置していた場合、一定時間を過ぎると自動でログアウトする。 ただ、この時分からない事がありまして、 「自動でログアウトする時に、フラグの削除処理とセッション変数の破棄の指示をどのようにして出すのか?」 また、 「ログアウトせずにブラウザを閉じても自動でログアウトできるのか?」 という2点に調べています。 上記2点のことでアドバイスを頂けないでしょうか? また、複数ログイン禁止の設定を行う際に、注意しておいた方がいい点などがあれば教えて頂けないでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • ブラウザバック禁止

    TOMCAT APACHE Mysqlを使用し卒業研究を行っています。 システムの概要としてはHTMLフォームより入力されたデータをjspで受け取りデータベースへ書き込み、ID・パスワードによりログインする会員ページのような物を製作しております。 データの受け渡しに一部セッションを使用しているのですが、ログアウトなどセッション切断後にブラウザバックを行うとTOMCATのエラーページが表示されてしまいます。(ページの表示の処理において、セッション情報を使用しているため当然ですが) そこでログアウト後にはブラウザバックをできないようにしたいのですが、これを明示的に行う事はできるのでしょうか? よろしくお願い致します。

    • ベストアンサー
    • Java
  • ログインに関するフラグについて

    こんばんは。お世話になっております。 会員登録のあるサイトを作成しているのですが、「ログインしたらフラグを立て、ログアウトしたらそれを消去、ブラウザを閉じたら・・・」というのを何度か目にしたことがありますが、そのフラグとはどんなものが適切で、ブラウザを閉じた場合のフラグの削除?はどんなアクションで行うのでしょうか? 先の、「ログインしたら・・」という流れも些か曖昧なところがあるかもしれませんが、2つのIDを登録した場合、2つのブラウザを立ち上げ、違うIDでログインされないようにするには?などを考えての策での質問です。 皆様のアイデアを伺えれば幸いです。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • ブラウザ上からなら実行可能なスクリプトがコマンドラインだと実行しません

    ブラウザ上からなら実行可能なスクリプトがコマンドラインだと実行しません windowXP, perl5 で開発しています。 簡単なプログラム(test.pl)なのですが ----- #!/usr/bin/perl use IO:Socket メール送信処理 1; ----- ブラウザ上から実行すると正しくメール送信されますが、 これをコマンドプロンプトから ----- perl test.pl ----- とすると、 Can't locate IO/Socket.pm と出てしまいます。 pathが通ってないとか絶対パスとかそのあたりかと思い、 socket.pmのあるパスを通したりしましたが、変化しません。 use IO::Socket を絶対パスとかで指定するのでしょうか? 解決方法をお教え頂ければと思います。 よろしくお願い致します。

    • ベストアンサー
    • Perl
  • PHPのプロセス滞留について

    PHPで会員用ページにPostgresを通してログイン後、DB検索ができる システムを作っています。 ログイン後、会員の方がログアウトせずにブラウザを 閉じた際にプロセスが滞留し続けDBの処理が重くなっていきます。 ブラウザを閉じた時点でログアウトとみなすコードはありますでしょうか。

    • ベストアンサー
    • PHP
  • JavaScriptで「実行中のブラウザ」の確認

    JavaScriptでプログラムを組んでいます。 OSはWin7 Home 64bit、通常使うブラウザは「FireFox」です。 ブラウザによって実行内容を変えたいため、「navigator.appName」で情報を得るのですが、 どのブラウザでも「Netscape」(FireFoxのことだと思います)になってしまいます。 どうも「navigator.appName」は通常使うブラウザの値が設定されているようです。 「通常使うブラウザ」ではなく、「実行中のブラウザ」の情報が欲しいのです。 いい方法があれば、教えてください。