2012-03-13 8 views
0

にオンラインユーザの数を減らします。は、私はちょうど私のウェブサイトに登録されたユーザーの数を追跡するために(のmysqlない)単純なファイル・システム・ED-ログインがPHP

誰もオンラインであることを知りたい。

  1. ブラウザが閉じられると、セッションは自動的に破棄されます。
  2. 明示的なログアウトコマンドも使用します。
  3. "ログアウト"ボタンを押すと、オンラインユーザーの数を処理することができます。オンラインユーザーの数を処理する "nouser.txt"ファイルの数を減らすことができます。

だから私は知りたい事はいえsession_destroy、ユーザーが「ログアウト」を押すとアウトで彼のブラウザを閉じた場合、あるは()私はオンラインユーザーの数を減らしたい、暗黙的にログインをクリアしますnouser.txtファイル

編集1:ただ、ブラウザを閉じるにonSession_Destroy()を取り扱うよう 。

+1

あなたは、nouser.txtの各エントリにタイムスタンプを追加することを考えましたか?ページが読み込まれるたびに、そのユーザーのタイムスタンプが更新され、10分以上経過した他のエントリが削除されます。 –

+3

ブラウザでもonbeforeunloadをトラップして、サーバーに迅速なajaxヒットを送信して、 。しかし、これは非常に信頼性がありません。ブラウザが最初にログアウトせずに終了しているかどうかを検出するための確実な方法はありません。 –

答えて

0

お試しいただきありがとうございました。私は最終的に様々なフォーラムビルド構造を検索することによって実現

は、私がオンラインであるユーザの数が常にクッキーによって追跡されていることを取得します。

ユーザーが(30日スキームのために言う)にログインしているときに、フラグは、一定の期間のために彼の名前に設定され、その後削除されます。したがって、オンラインになっているフォーラムに表示されるユーザーの数は常に不正確です。 :)

これ

は「限り、クッキーやセッションがオンのままとして、ユーザーがオンラインであると考えられている」、私のPHPの先生(私の脳、笑)、と言うことで確認されました。

しかし、私はもう一つ問題がありました。どのように彼/彼女はグーグル、ヤフー、Facebookの中でオンラインになっている時はいつでも、彼らは、ユーザーを追跡地獄...

に私もそのための答えを得ました。 MARC-BとROYCHRIは、ブラウザやブラウザのタブが開いている間、セッションは保持され、ユーザは最終的にクッキーによって追跡されると述べている。

phoo ...、なんて理論者。私が言ったように、私は実際に自分自身の問題を解決しました;)そして私はそれをやりたいです。

もう一度、試してみていただきありがとうございます。理論を覚えておいてください。

素晴らしい一日を過ごしましょう。

1

ページが閉じられたときにAJAX呼び出しを行うことをお勧めします。

コメントでMarc Bが提案したように、onbeforeunloadイベントを使用できます。

<html> 
<head> 
<script> 
function closeIt() 
{ 
    // Perform your AJAX hit here using your favorite method (jquery or whatever). 
} 
window.onbeforeunload = closeIt; 
</script> 
</head> 
<body> 
    <a href="http://www.google.com">Click here to navigate to 
     www.google.com</a> 
</body> 
</html> 
+0

私は正確なアイデアを言う必要があります... – Kamal

+0

しかし、ロイクリ、問題があります。Google Chromeについて考えてみましょう。私は1つのタブで自分のウェブサイトを開き、ログインして閉じますが、ブラウザは閉じません。セッションが完全に破棄されない、つまり新しいタブでウェブサイトを再び開いた場合でも、セッションは保持されます。だから、私はまだオンラインです。 今私は同じことに戻る。私はON_SESSION_DESTROYED()関数のようなものが必要です。 –

+0

@Marcのコメントのように、絶対確実な方法はありません。ユーザーが彼のクッキーを削除すると、セッションは失われます。あなたは決して知りません。あなたができることは、ユーザーがタブをあなたのサイトに閉じたときに、彼は恋人ではないということです。彼が再びタブを開いたら、彼を«オンライン»と見なしてください。これは、ページの別のAjaxコール「onload」を意味します。インターネットはステートレスです。私たちには、まったく同じような状態のセッションがありますが、それは信頼できません。そういうものだ! :) – roychri

関連する問題