- ベストアンサー
閉じるボタン「×」を制御したい
PHPを使って作業している者です。 windowの閉じるボタンが押された場合、イベントを起こす方法はありませんか? どうしたいのかを具体的にいいますと、 ユーザーのログイン、ログアウトの情報をPHPを介してMysqlのデータベースで管理しています。 閉じるボタン「×」を押した場合、データベース内にあるユーザー情報を削除したいのです。 ログアウトボタンを押されずに退席し、データベース上にユーザー情報が残ったままになってしまうことを避けたいのです。 javascriptを併用してもかまわないので何とかならないでしょうか? 排他制御の一環として今回の質問内容を模索しているので、もっと別で効率のいい方法が有るとは思いますが、排他ロックをいまいち理解できないためデータベース上にユーザー情報の有無で制御してしまおう考えてのことです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちわ。 想像で回答してすみませんが…。 javascriptでonunloadか何かで画面を閉じるイベントを取得できます。 イベントを取得したらAJAX(だったかな?)でphpで処理をさせたらいかがですか? 閉じずにほかのページに遷移してしまったことも考えられますので #1さんのようじ時間で見るのもいいかと思います。 すごい曖昧ですみません・・・
その他の回答 (1)
- Gizensha
- ベストアンサー率34% (207/608)
PHPはサーバー側で動作するので、クライアント側のウインドウを閉じる動作を拾うことはできません。 JavaScriptを使っても、たとえば電源断などのような場合には対応できないので無意味でしょう。 多くのサイトではある程度の時間ログインがなかった場合に自動的にログアウトさせてしまっていると思いますが、そのような方向性ではいかがでしょうか。
お礼
Gizensha様、早い回答ありがとうございます。 やはり、windowの制御では無理がありそうですね。 >多くのサイトではある程度の時間ログインがなかった場合に自動的にログアウトさせてしまっていると思いますが、そのような方向性ではいかがでしょうか。 なるほど。ちょっとその方向で検討してみます。 ですが、PHP上だけであればセッションやクッキーの時間を指定してしまえば値のクリアは簡単だと思いますが、MysqlのDBでも時間でのクリアは可能でしょうか?(そもそもセッションでは同一マシン限定の制御になってしまいますよね。。。)
お礼
amountainblast様、回答ありがとうございます。 onunloadのイベントハンドラは使えそうですね。 ショートカット(alt + w)にも対応しているのは驚きでした。 PCの電源そのものが落ちたり、フリーズしてしまったら、等の穴はありそうですが今回の私の仕様にはかなり近いものがあります。 AJAXを理解しておらず、PHPへの連動~処理のやり方に困っていますが、イベント自体を発生させることはできました。 今からPHP処理へ連動できるよう模索してみます。 ありがとうございました。