人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

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

●質問者: php-beginner
●カテゴリ:ウェブ制作
✍キーワード:dB MySQL PHP アクション システム
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● falcosapiens
●27ポイント

2 onunload属性を使用する。

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

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

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


2 ● Mook
●27ポイント ベストアンサー

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

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


例えばユーザのテーブルが下記のような場合でタイムアウトが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

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

管理


3 ● KUROX
●26ポイント

2.ブラウザを閉じる

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

できません。

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

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

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

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

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

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ