我将它设置为将每个视图记录在一个名为的表中的位置,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']
(这是调用函数时传递的内容)甚至不存在。
什么是让观看计数系统只计算每个观看者一次的好方法,包括未注册的人?
编辑:当然没有办法可靠地做到这一点。但是有一种方法可以做到至少有点好。