2012-04-11 10 views
2

可能性の重複:
how to count the site current visitors using java script or php表示数

は、私は私のウェブサイトに埋め込まれた流れを持っているが、私はページ上のライブ視聴者数を引いしたいです。 PHP/AJAXでこれを行う方法はありますか?現在私のWebページの1つを表示している人の数を表示しますか?

+2

はい(ほとんど)何かを行う方法があります –

+0

そこに任意のセッション! – zod

+0

小さなアイデア:PHPを使用しているときに、テキストファイルを作成します。スクリプトに内容を読み込ませてから、charまたは数値を追加します。 合計視聴者は、ストリングの番号または長さの値になります。実際の視聴者数を更新するために毎時間更新することができます。 – chepe263

答えて

3

免責事項:これは長い時間前のことでしたので、ここでは醜い古いコードです(私は見栄えを良くすることに努力を払うつもりはありません。あなたはどのようにそれを行うことができるかを考え、特定のコードをスプーンでフィードしないでください)。

$timeout = time() - (20); 

$sessid_exist = mysql_query("SELECT sessid FROM bw_sessions WHERE sessid='" . session_id() . "'") or die (mysql_error()); 
$sessid_check = mysql_num_rows($sessid_exist); 

if ($_SESSION['bw_username']) { 
       $sql = mysql_query("UPDATE bw_sessions SET timestamp='" . time() . "', username='" . $_SESSION['bw_username'] . "' WHERE sessid='" . session_id() . "'"); 
} else { 
    if($sessid_check > 0){ 
       $sql = mysql_query("UPDATE bw_sessions SET timestamp='" . time() . "' WHERE sessid='" . session_id() . "'"); 
       } else { 
       $sql = mysql_query("INSERT INTO bw_sessions (id, username, sessid, timestamp, ip) 
     VALUES(null, '', '" . session_id() . "', '" . time() . "', '" . $_SERVER['REMOTE_ADDR'] . "')") or die (mysql_error()); 
      } 
} 


$sql = mysql_query("SELECT distinct sessid FROM bw_sessions WHERE username='' AND timestamp >= '$timeout' ORDER BY timestamp DESC") or die (mysql_error()); 
$sql2 = mysql_query("SELECT distinct sessid,username FROM bw_sessions WHERE username!='' AND timestamp >= '$timeout' ORDER BY username DESC") or die (mysql_error()); 
$num_guests = mysql_num_rows($sql); 
$num_reg = mysql_num_rows($sql2); 
?> 

<font size='1'>Currently Online: <br> 
         <?=$num_guests;?> Guests<br> 
         <?=$num_reg;?> Registered users 

テーブルを作成してsession_idの..を保持し、そのテーブルに「最近の」アクティビティを照会するだけで済みます。リアルタイム更新が必要な場合は、上記のコードを "online.php"にテーブルのデザインに合わせて置き、x秒ごとにjquery経由で呼び出してください。

+0

ユーザーがページに入ると、セッションを手渡して、それがなくなるまで追跡します。 –

+0

本質的に、はい。ブラウザーが開いている/セッションがタイムアウトしていない限り、セッションは訪問者に固有のままでなければなりません。最近のセッション活動について、さまざまな活動や質問を更新してください。 – Blake

+0

これは私に何をしたいのか、私が周りに遊べるものの大まかなアイデアを与えます。私に合法的に聞こえる!ありがとう! –

1

Clickyのようなものがうまくいくはずです。

+0

まあ、私はそれが私の目に見えるだけでなく、私のウェブサイトに生きていることを示したいと思います。これは背景分析のようです。 –

1

あなたがどこかで見たことがあるなら、恐らく可能であり、このようなことはほとんどのフォーラムソフトウェアに組み込まれており、多くのウェブサイトで使用されているので、おそらくそれほど難しいことではありません。

一般的な方法は、接続された訪問者のIPアドレスを$_SERVER['REMOTE_ADDR']から取得し、それをファイルに書き込み、すべての固有IPを合計して何人の人が接続されているかを調べます。 接続されていないIPを削除するには、何らかのクリーニング機能が必要です。

スクリプトはpageloadで実行され、ファイル内の訪問者を数えます。したがって、ajaxを使用する場合、頻繁にカウントを更新するためにそのファイルをポーリングするPHPスクリプトを実行するか、pageloadで実行できますあなたがPHPでやっているように、必要なものはありません。

$.ajaxでPHPスクリプトを実行する方法を理解していないのであれば、最初にやるべきことは、ビジター数をカウントする関数を書くことです。

このようなスクリプトの検索で2400万ヒットがあり、herehereの1つがあります。