如何实现未注册用户的查看计数


How to implement view count for unregistered users?

我已将其设置为将每个视图记录在名为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'](调用函数时传递的内容)甚至不存在。

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

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

Corbin说得对。就个人而言,我会使用饼干。IP 可以在多个人之间共享,会话只会持续到您关闭浏览器为止。我认为饼干是你最好的选择,但当然,它可以被删除。只需将生命周期设置为"永远"或较长的间隔即可。