PHPを使いあるシステムの管理画面を作成しています。


ログイン機能を持たせているのですが、ログインしたユーザのログアウトした時間をDB(MySql)に保存する方法で悩んでいます。

ユーザはセッションで管理しています。
ログアウトのアクションは下記の3つです。

1.ログアウトボタンを押す
2.ブラウザを閉じる
3.セッションタイムアウト

1以外の方法が分からずに悩んでおります。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/08/13 10:13:18
  • 終了:2007/08/14 12:10:52

ベストアンサー

id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912007/08/13 12:14:36

ポイント27pt

ブラウザを閉じてしまった場合や、がタイムアウトしてしまった場合は、その時点で処理をすることはできません。

なので、更新があるたびにセッションタイムアウト時間で暫定処理をしておき、正式にログアウトした場合は記録をログアウトとして処理をしたらどうでしょうか。


例えばユーザのテーブルが下記のような場合でタイムアウトが15分であるとき、10:00ログオンしたとしたら

UserName EndTime EndMethod
User A 2007/8/13 10:15 TimeOut

とします。10:05 分に更新があった場合

UserName EndTime EndMethod
User A 2007/8/13 10:20 TimeOut

とし、10:10 にログアウトがあれば

UserName EndTime EndMethod
User A 2007/8/13 10:10 LogOut

こうすれば、ログオンしなかった場合はタイムアウトが発生したとされる時間が記録されることになります。

管理

その他の回答(2件)

id:falcosapiens No.1

falcosapiens回答回数126ベストアンサー獲得回数132007/08/13 11:37:36

ポイント27pt

2 onunload属性を使用する。

ブラウザを閉じたときに限られず,画面遷移でもイベントが発生するので,やや実装が手間ですが,javascriptのonunloadを使用して,一定のページを呼び出すようにすれば,やりたいことができるはずです。

http://w3g.jp/xhtml/dic/onload

3 ガーベージ・コレクションによってセッションが削除された時間(本来のセッション・タイムアウト)を追いかけるのは手間がかかりますので,最終のアクセスがあった後,一定時間が経過した場合にはタイムアウトしたものと扱うのが現実的ではないでしょうか。

id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912007/08/13 12:14:36ここでベストアンサー

ポイント27pt

ブラウザを閉じてしまった場合や、がタイムアウトしてしまった場合は、その時点で処理をすることはできません。

なので、更新があるたびにセッションタイムアウト時間で暫定処理をしておき、正式にログアウトした場合は記録をログアウトとして処理をしたらどうでしょうか。


例えばユーザのテーブルが下記のような場合でタイムアウトが15分であるとき、10:00ログオンしたとしたら

UserName EndTime EndMethod
User A 2007/8/13 10:15 TimeOut

とします。10:05 分に更新があった場合

UserName EndTime EndMethod
User A 2007/8/13 10:20 TimeOut

とし、10:10 にログアウトがあれば

UserName EndTime EndMethod
User A 2007/8/13 10:10 LogOut

こうすれば、ログオンしなかった場合はタイムアウトが発生したとされる時間が記録されることになります。

管理

id:KUROX No.3

KUROX回答回数3542ベストアンサー獲得回数1402007/08/13 15:50:30

ポイント26pt

2.ブラウザを閉じる

3.セッションタイムアウト

できません。

実際このタイミングで、ログアウトを記録している

システムを見たことありません。

ログアウトという概念を導入しても、ログアウトボタンが

押される保証がないので、ログアウトすることに依存して

システム設計をしてるなら、見直しが必要です。

ページがアクセスされるたびに、その時刻を記録し、

最終の時刻をログアウト時間とみなす方法しか思いつきません。

http://q.hatena.ne.jp/answer

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

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

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

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

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