PHPでユーザーがブラウザのウィンドウを閉じる際にセッションを終了するにはどのようにしたらよいのでしょうか。

一度session_destroy()用の他のページに飛ばしてjavascriptなどでウィンドウを閉じることは思いついたのですが、できたらブラウザの「×」(閉じるボタン)などでウィンドウを閉じたときにもセッションが終了できるようにしたいと考えております。どなたかご教授頂けたら助かります。よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2008/07/11 06:31:24
  • 終了:2008/07/11 20:58:08

回答(3件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012008/07/11 06:52:31

ポイント5pt

onUnloadイベントやOnBeforeUnLoadイベントを拾う。

JavaScript : onBeforeUnload

id:shinwa-tokyo

ご回答ありがとうございます。

onUnloadイベントやOnBeforeUnLoadイベントで

どのようにphpを実行するのか

もう少し詳しく教えていただけたら助かります。

2008/07/11 07:09:36
id:gya0521 No.2

gya0521回答回数13ベストアンサー獲得回数02008/07/11 09:46:31

ポイント40pt

サーバ上に session_destroy.php 等のスクリプトを設置しておいて、

以下のような感じにすれば良いのではないでしょうか。

<script type="text/javascript"><!--</p> <p>window.onunload = function() {</p> <p> httpObj = new XMLHttpRequest();</p> <p> httpObj.onload = displayData;</p> <p> httpObj.open("GET","session_destroy.php",true);</p> <p> httpObj.send(null);</p> <p>}</p> <p>// -></script>

id:shinwa-tokyo

ご回答頂きありがとうございました。

なんとなく方法がわかりましたので、

なんとかこの方法で進めてみたいと思います。

ありがとうございました。

2008/07/11 20:56:27
id:kibitaki No.3

kibitaki回答回数53ベストアンサー獲得回数42008/07/11 11:52:00

ポイント35pt

kn1967さんの解答と、shinwa-tokyoさん自身が述べておられる手法の組み合わせで

・onBeforeUnloadイベントをハック(js)

・session_destroy()を組み込んだPHPを非同期通信または別ウィンドウで呼び出し(js)

・session_destroy()実行(PHP)

・必要があれば結果を別ウィンドウにreturn(PHP)

・さらに必要があればreturn値を別ウィンドウで拾って処理(js)

となります。

id:shinwa-tokyo

ご回答ありがとうございます。

この方法で進めてみます。

2008/07/11 20:56:59

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • チャットを作る 引き続きPHPの勉強。PHP初心者勉強会https://sites.google.com/site/phpbeginners/ include命令 (include_once) / require命令 (require_onece) どちらもファイルの読込・展開命令 include = エラー発生時
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません