避免使用 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 来自同一用户的多个视图的主要内容,如果未能解决你的问题,请参考以下文章
在 Espresso 中,当多个视图匹配时如何避免 AmbiguousViewMatcherException
Django模型:如何避免在使用来自同一个表的2个外键时引用相同的记录