質問

ログイン、ログアウト、継続時間をデータベースに保存したいと考えています。

  • ログイン時刻は、ユーザーが認証されたとき(ログインに成功したとき)に作成されます。
  • ログアウト時間は、ユーザーがログアウト ボタンをクリックしたときに作成されます。
  • 期間はログアウト時間からログイン時間までです。(ログアウトからログインを差し引いた値)

しかし問題は、ユーザーがログアウト ボタンをクリックしなかったらどうなるかということです。以下のような状況があります。

  • インターネットの損失
  • ブラウザ/タブを閉じます。(JavaScript を使用する必要がありますが、その方法がわかりません。何かアイデアはありますか?)

編集:

質問に何か追加するのを忘れていましたが、プログラムはフルフラッシュプログラムであり、他のページへのナビゲーションはありません。1ページのみ

役に立ちましたか?

解決

彼らは単に自分のブラウザを閉じ、またはインターネットから消えている場合、

あなたは、ログアウトユーザーのためのイベントを受け取るに頼ることはできません。

この場合、あなたはいくつかの種類のセッションタイムアウトを持っている必要があり、そして、あなたのアプリが彼らのセッションが古すぎる実現したときにログアウトを記録します。

これは本当の必要条件であるならば、私はあなたがタイムアウトのセッションを監視し、「クーロン」の仕事を必要とすると思います。ログオンした場合、セッションが、タイムアウトした場合は、そのユーザーのために、「ログアウト」イベントを記録します。

それは確実にいずれか(サーバ・プロセスを再起動する場合など)が呼び出されることはありませんので、あなたは、(例えば)ASPNETののSession_Endイベントを使用することはできません。

彼らはログオンしたとき、あなたは古いセッションをチェックし、閉鎖されていなかったものであれ、最後のページヒット以来、一定時間続いたと仮定 -

別のオプションは、ユーザーがログインにログアウト時刻次回を追加することです。

それは本当にあなたがすることができるすべてです。

他のヒント

これは、PHPのすべてのセッション/ログイン機能はの通常がクッキーベースであることを覚えておくことが重要です。そのため、セッションクッキーの有効期間を変更すると、あなたの問題を解決する必要があります:

http://us3.php.net /manual/en/function.session-set-cookie-params.phpする

彼らは唯一のクッキーを使用して

また、あなたは、PHPのセッションを設定することができます:

ます。http:// US2 .php.net /マニュアル/ EN / session.configuration.php#ini.session.use専用のクッキー

ここでも、あなたはなぜ近いが...ブラウザのウィンドウ/タブをキャッチすることができますか?たとえば、私は、複数のタブで開いて、あなたのサイトを持つことができます。私はこれらのタブのいずれかを閉じると、私は自動的にあなたのウェブサイトからログアウトする必要がありますか?それは非常に悪いデザインです。有効期限が切れるので、その代わりに、のブラウザの場合はセッションの有効期間を設定するはちょうどタブ閉じられていません。 (注また、そのwindow.unloadが閉じ、サイト上ののいずれかののウィンドウログアウトします - 。?ポップアップまたはインラインフレームを含むが、あなたが本当にそれを望んでください)

のhttp://us2.php

の.NET /マニュアル/ EN / session.configuration.php#ini.session.cookie一生

は、データベースにセッション状態を保存する場合は、<のhref =「http://www.developertutorials.com/tutorials/php/saving-php-session-data-database-050711/page1.html」いずれかを試してくださいrel = "nofollowをnoreferrer"> 1 の<のhref = "http://www.devshed.com/c/a/PHP/Storing-PHP-Sessions-in-a-Database/" のrel = "nofollowをHTTP "のこれらの<のhref =の>" noreferrer:// www.tonymarston.net/php-mysql/session-handler.html」relが= "nofollowをnoreferrerは"> をガイドします。または、 session_set_save_handler に<と独自のロール/ P>

ブラウザ/タブの閉鎖について、あなたはunloadイベント(window.onunloadをバインドすることができ、jQueryの $(window).unload(fn)あなたのサーバーに通知するに、または任意の他)。より汎用的なソリューションは、定期的にサーバー(たとえば、5分ごとに)pingを実行することであろうが、それは、ユーザーに迷惑なことなので、慎重にそうかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top