PHPを使って作業している者です。
windowの閉じるボタンが押された場合、イベントを起こす方法はありませんか?
どうしたいのかを具体的にいいますと、
ユーザーのログイン、ログアウトの情報をPHPを介してMysqlのデータベースで管理しています。
閉じるボタン「×」を押した場合、データベース内にあるユーザー情報を削除したいのです。
ログアウトボタンを押されずに退席し、データベース上にユーザー情報が残ったままになってしまうことを避けたいのです。
javascriptを併用してもかまわないので何とかならないでしょうか?
排他制御の一環として今回の質問内容を模索しているので、もっと別で効率のいい方法が有るとは思いますが、排他ロックをいまいち理解できないためデータベース上にユーザー情報の有無で制御してしまおう考えてのことです。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
こんにちわ。
想像で回答してすみませんが…。
javascriptでonunloadか何かで画面を閉じるイベントを取得できます。
イベントを取得したらAJAX(だったかな?)でphpで処理をさせたらいかがですか?
閉じずにほかのページに遷移してしまったことも考えられますので
#1さんのようじ時間で見るのもいいかと思います。
すごい曖昧ですみません・・・
amountainblast様、回答ありがとうございます。
onunloadのイベントハンドラは使えそうですね。
ショートカット(alt + w)にも対応しているのは驚きでした。
PCの電源そのものが落ちたり、フリーズしてしまったら、等の穴はありそうですが今回の私の仕様にはかなり近いものがあります。
AJAXを理解しておらず、PHPへの連動~処理のやり方に困っていますが、イベント自体を発生させることはできました。
今からPHP処理へ連動できるよう模索してみます。
ありがとうございました。
No.1
- 回答日時:
PHPはサーバー側で動作するので、クライアント側のウインドウを閉じる動作を拾うことはできません。
JavaScriptを使っても、たとえば電源断などのような場合には対応できないので無意味でしょう。
多くのサイトではある程度の時間ログインがなかった場合に自動的にログアウトさせてしまっていると思いますが、そのような方向性ではいかがでしょうか。
Gizensha様、早い回答ありがとうございます。
やはり、windowの制御では無理がありそうですね。
>多くのサイトではある程度の時間ログインがなかった場合に自動的にログアウトさせてしまっていると思いますが、そのような方向性ではいかがでしょうか。
なるほど。ちょっとその方向で検討してみます。
ですが、PHP上だけであればセッションやクッキーの時間を指定してしまえば値のクリアは簡単だと思いますが、MysqlのDBでも時間でのクリアは可能でしょうか?(そもそもセッションでは同一マシン限定の制御になってしまいますよね。。。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL 【投稿情報用データベース posts】は必要ないと思います。 1 2022/06/02 21:25
- MySQL 「掲示板のログイン画面」はPHP~MySQLに「データベース認証のシステム」方式です。 1 2022/09/27 05:00
- WordPress(ワードプレス) ワードプレスの管理画面でユーザー名が違うと出るのですがどこで設定したユーザー名を打てばいいのでしょう 1 2022/03/31 19:36
- 工学 1つのタクトスイッチで複数の並列回路を閉じ、アースにつなげることができるスイッチはありますか。 2 2022/08/06 10:38
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- MySQL [1000地域 × 10カテゴリー = 1万件のテーブル]!グループ化? 1 2023/06/14 23:56
- ネットワーク 家庭内LANの2台のPC間で「ネットワーク資格情報の入力」で引っかかってフォルダが共有できない 1 2022/12/11 23:37
- その他(セキュリティ) 匿名チャットアプリでの知られたくない会話 個人情報について 1 2023/03/29 18:08
- ハッキング・フィッシング詐欺 スマホアプリのトラッキング 個人情報について 5 2023/03/31 08:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php history.back()の戻るボタ...
-
HTMLエスケープ処理とデーター...
-
asp.netでのセッションを使用し...
-
フォームを使わずにPOST送信す...
-
Dosブロンプトでtabを出力したい
-
shシェルスクリプト 空白行の...
-
wordの差し込み印刷で文字...
-
「取得先」という表現について
-
switch()文で値の大小比較
-
バッチファイルでpingの結果を...
-
phpでcookieがうまく保存されない
-
DTOとEntityの差は何ですか。
-
開始と終了を指定して、その間...
-
format関数について
-
PHPのセッションについて
-
[C#]Arraylistに追加した構造体...
-
findstrのerrorlevel
-
VBA コレクションに2次元配列...
-
C#で特定LANアダプタの状態を取...
-
IEを使わないでhtmlテキストを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ログイン画面から入って、「戻...
-
php 入力画面から確認表示画面...
-
IFRAME内PHPのセッション変数取...
-
php に関して質問です。 各ユー...
-
HTMLエスケープ処理とデーター...
-
POSTで受け渡したものを保存し...
-
「ページネーション」で検索キ...
-
VBAで重複チェックの仕方を教え...
-
PHPで返信メールにチェックボッ...
-
フォームを使わずにPOST送信す...
-
asp.netでのセッションを使用し...
-
飛び先のランダムURLの取得方法...
-
php history.back()の戻るボタ...
-
閉じるボタン「×」を制御したい
-
ブラウザの戻るボタンで重複登...
-
ウェブアプリの設計に問題がな...
-
ブラウザバックしてもチェック...
-
ページに時間制限
-
PHPで値を保持する方法
-
パスワード認証後の、以降のペ...
おすすめ情報