避免使用 cookie 来自同一用户的多个视图

Posted

技术标签:

【中文标题】避免使用 cookie 来自同一用户的多个视图【英文标题】:avoid multiple views from same user using cookies 【发布时间】:2014-02-27 22:15:44 【问题描述】:
$old_views = $row['views'];
$new_views = $old_views + 1;
$sql = "UPDATE posts SET views='".$new_views."' WHERE category_id='".$cid."' AND      
id='".$id."' LIMIT 1"; 
$res = mysql_query($sql);

每当我刷新页面时 $row['views'];继续添加。 也许跟踪用户的IP?据我了解,cookie 是最好的方法。提示会很有帮助...

【问题讨论】:

【参考方案1】:

可以设置cookie也可以跟踪ip:当用户点击页面时,保存ip和访问时间。如果没有经过特定的时间间隔(比如 24 小时),则不要添加计数器,否则更新时间并添加计数器。

【讨论】:

?? 1) echo("访问次数:$visits."); 【参考方案2】:

这是一种 cookie 方法,请确保在设置任何 html 之前进行所有 DB 查询。

<?php

if(!isset($_COOKIE['visited']))
 $old_views = $row['views'];
 $new_views = $old_views + 1;
 $sql = "UPDATE posts SET views='".$new_views."' WHERE category_id='".$cid."' AND id='".$id."' LIMIT 1"; 
 $res = mysql_query($sql); 
 setcookie ("visited", "true", time() + 60*60*24*7*365);
?>

请注意,cookie 过期时间配置为从首次访问开始持续 1 年。

【讨论】:

请注意,如果您模糊地关心您的数据,这并不是很好

以上是关于避免使用 cookie 来自同一用户的多个视图的主要内容,如果未能解决你的问题,请参考以下文章

避免在 Oracle 过程中频繁调用同一视图

在 Espresso 中,当多个视图匹配时如何避免 AmbiguousViewMatcherException

Django模型:如何避免在使用来自同一个表的2个外键时引用相同的记录

如何避免从两个不同的随机变量中获得相同的值,但值来自同一个列表?

使浏览器 cookie 在 web 视图中可用

cookie