我已将其设置为将每个视图记录在名为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 可以在多个人之间共享,会话只会持续到您关闭浏览器为止。我认为饼干是你最好的选择,但当然,它可以被删除。只需将生命周期设置为"永远"或较长的间隔即可。