2

我将它设置为将每个视图记录在一个名为的表中的位置,question_views因此每个用户只能计算一次。

但是,我有一个问题。现在,当您未登录时,查看次数只会不断增加,因为我无法识别未注册的人(或未登录的人)。

这是我在用户查看时将用户输入数据库的方式:

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'](这是调用函数时传递的内容)甚至不存在。

什么是让观看计数系统只计算每个观看者一次的好方法,包括未注册的人?

编辑:当然没有办法可靠地做到这一点。但是有一种方法可以做到至少有点好。

4

1 回答 1

3

科尔宾是对的。不过,就我个人而言,我会使用 cookie。IP 可以在几个人之间共享,并且会话只会持续到您关闭浏览器。我认为 cookie 是你最好的选择,当然,它可以被删除。只需将生命周期设置为“永远”或较长的间隔。

于 2012-05-31T23:58:48.140 回答