2

各ビューをと呼ばれるテーブルに記録するように設定しているquestion_viewsので、各ユーザーは1回だけカウントできます。

しかし、私には問題があります。現在、ログインしていないときは、未登録の人(またはログインしていない人)を識別する方法がないため、ビュー数が増え続けます。

これは、ユーザーが表示するときにデータベースにユーザーを入力する方法です。

function add_view($user, $question) {
  $ts = time();
  $check = mysql_num_rows(mysql_query("SELECT * FROM question_views WHERE user='$user' AND question_id=$question"));
    if($check==0) {
      mysql_query("UPDATE questions SET views=views+1 WHERE qid=$question");
      mysql_query("INSERT INTO question_views (user,question_id,date) VALUES ($user,$question,$ts)");
    }
}

ユーザーがログインしていない場合$_SESSION['userid'](関数が呼び出されたときに渡されるもの)は存在しません。

未登録の人を含め、各視聴者を1回だけカウントする視聴回数システムを作成するための良い方法は何でしょうか。

編集:もちろん、それを確実に行う方法はありません。しかし、少なくともある程度はそれを行う方法があります

4

1 に答える 1

3

コービンはそれを正しく理解しています。個人的にはクッキーを使います。IPは複数のユーザー間で共有でき、セッションはブラウザを閉じるまで続きます。クッキーが最善の策だと思いますが、もちろん削除することもできます。有効期間を「永久」または長い間隔に設定するだけです。

于 2012-05-31T23:58:48.140 に答える