ユーザーが私の php Web サイトを離れるときに強制的にログアウトしますか?
質問
私の PHP アプリケーションでは、$_SESSION を使用してユーザーがログインしているかどうかを追跡しています。ユーザーが私のサイトのページから離れた場合、 http://mysite.com そして行きます http://someotherwebsite.com, 任意のページに戻った場合に自動的にログアウトしたいと考えています。 http://mysite.com, 、再度ログインする必要があります。
これを行う簡単な方法はありますか?
解決
ユーザーがいつ 葉 あなたのサイトでは、セッションにタイムアウトを実装するのが最善の策です。
ほとんどの回答が言っているように、あなたは できた JavaScriptイベントで確認してみる onbeforeunload
ただし、ユーザーは JavaScript を無効にするか、次のようにしてこれを回避できます。 BalusC が指摘していた, Opera など、サポートされていない Web ブラウザを使用している場合。
したがって、セッションにタイムアウトを実装することが強制的にログアウトする最良の方法であると強く信じています。
他のヒント
を除きをタイムアウトにおセッションをしなければいけません。のけたことである onbeforeunload
JavaScriptの場合火災時のユーザーの現在のページでのイベントを知らない 場所 ユーザの追い込まれています。きただし、 本当に いこのためには、 か の構築も、以下のhacky回避策(未審査):
設定
onbeforeunload
イベントに送信AJAXの通話をサーバーです。(どのようなことに成功しく通話が前のページが閉鎖問題の検索のための"onbeforeunload ajax"というもの。のAjax通話がカウントダウンというユーザーセッションが死亡し、十秒です。
場合、ユーザーは、本サイトのカウントダウンが適用される。
ユーザの場合は別のページのサイトをクリアする"金型"countdowns時に次のページです。
これが揺らいでいる気がするためでもうることをAjaxでの要求 始 カウントダウンに到着後サーバーは次のページで 除 このカウントダウン.だが本当に必要なことに、この方向です。作品ユーザJSのみ有効となります。
Aセッション(例えば90秒)で非常に低いタイムアウトを置くことになり、これを実装するために、そしてあなたが仕えるすべてのページにiframe
を置く方法を第二のアイデア。 IFRAMEは、そのページへの呼び出しごとに60秒になるだろうということ。
このは(私はそれが6または7で停止したかどうかわからない?)JavaScriptをせずに動作しますが、古いバージョンのInternet Explorerに迷惑なクリック音を作成することができます。
あなたすることはできません(ただし、あなたのセッションはしばらく後に自動的にタイムアウトします。あなたは、短い時間にタイムアウトを設定することができるように)。
私は(あまりないです)PHPについて知っているから、あなたのアプリケーションは、これまで彼らがサイトを去った知っているだろうか?あなたがsomeotherwebsite.comに行けば、彼らが戻るまで、あなたのコードが再び呼び出されていません。
残念ながらそうでもありません、 これは、Webアプリケーションとの大きな問題の一つです。お使いのアプリケーションのブラウザが別のウェブサイトへの上に移動したことを知る方法がありません。
としてChristohpeDは、セッションのタイムアウトを設定することができます言及しています。 ちょうどあなたのサイトが唯一のサーバーがPOSTまたはJavaScriptのpingのいくつかの種類をrecieves時間をリフレッシュすることを覚えています。
タグ役に立てば幸い