0

私は1日アクティブサイトを持っています。ページ内で私はこの機能を持っています

public function visit_update($link){
    $query = mysql_query("UPDATE user SET visit = visit + 1 WHERE link = \"$link\" ");
}

すべてのユーザーには固有のリンクがあります。テストのため、アクティブなユーザーは1人だけです(ページは現在テスト中です)。

昨夜、1人のアクティブユーザーについて、データベースで50回の訪問がカウントされました。今日私がそれをチェックしていたとき、それは560回の訪問でした。私はグーグルアナリティクスもアクティブにしていて、3人の異なるエクスプローラーでテストしていたので、50ページほどの訪問と3人の訪問者を数えていました。

この関数はそれ自体を繰り返すことはなく、ページの所有者ではない訪問者のみをカウントします。そんなことがあるものか ?

アップデート:

私は生のログを調べて、一晩中私のサイトにアクセスしていた2つのIPアドレス(66.249.66.87と66.249.72.210)を見つけました。これらはグーグルからのものです。実際のWebブラウザとPHPのロボットのようなダミーを区別するにはどうすればよいですか?それは可能ですか?

4

3 に答える 3

1

訪問しているブラウザのユーザーエージェントを確認することで、クローラーを検出できます。ほとんどのWebクローラーは、クローラーであることを示しています。クローラー検出コードの例は、ここにあります。

于 2012-07-13T14:25:36.583 に答える
0

サイト訪問数を更新する前に、ユーザーセッションを確認する必要があります。

public function visit_update($link){
      if(!empty($_SESSION['user_id'])
      {
            $query = mysql_query("UPDATE user SET visit = visit + 1 WHERE link = \"$link\" ");
      }
}

これにより、サイトのアクティブなメンバーの訪問数のみが更新されます。

于 2012-07-13T11:33:13.440 に答える
0

次の方法で、値が頻繁に更新されないようにすることができます。

UPDATE user
SET visit = visit+1, last_visit = CURDATE()
WHERE link = $link AND last_visit < CURDATE() - INTERVAL 30 MIN
于 2012-07-13T11:51:11.327 に答える