Rumah  >  Artikel  >  pembangunan bahagian belakang  >  替每篇文章都在用户那加个COOKIE代表已查看过.合理吗

替每篇文章都在用户那加个COOKIE代表已查看过.合理吗

WBOY
WBOYasal
2016-06-13 12:00:44782semak imbas

为每篇文章都在用户那加个COOKIE代表已查看过..合理吗?
最近在做文章系其中一功能,就是统计当前文章的查看次数(流量)


我的文章地址是  news.php?id=123

网上找到个方法

<br />$gid = $_GET["id];<br />if( !isset($_COOKIE["user"]) ){ <br />	setcookie("user","newGuest",time()+3600); <br />}else { <br />	setcookie("user","oldGuest"); <br />} <br /><br />if ( $_COOKIE["user"] != "oldGuest") {<br />	$hits_now = $row["hits"]+1;<br />	$pdo->exec("UPDATE `gamedb_game` SET `hits`='$hits_now' WHERE `id` = '$gid'");	<br />}



这样的话,同一浏览器第二次刷新,就不会重复增加查看数了

但一想不对,去其他文章一试,即便第一次浏览,也不增加查看了

所我想到不如这样?

<br />$gid = $_GET["id];<br />if( !isset($_COOKIE["user"]) ){ <br />	setcookie("user","newGuest",time()+3600); <br />}else { <br />	setcookie("user","oldGuest_$gid"); <br />} <br /><br />if ( $_COOKIE["user"] != "oldGuest_$gid") {<br />	$hits_now = $row["hits"]+1;<br />	$pdo->exec("UPDATE `gamedb_game` SET `hits`='$hits_now' WHERE `id` = '$gid'");	<br />}


把oldGuest改成oldGuest_$gid   有个文章id加在后面,就有唯一性了吧?

但这样的话,某程度上会对用户的浏览器产生不良的反应吗?

还是其他cms都是这样做的?

如果要写入sql要匹配是否第一次的话,就太复杂了

想到的只有cookie


这样的方法 对我自己主机,还有对用户,会如何?
------解决方案--------------------
查看数增加刷新一次增加一次没问题呀,
如果实在想用你的方法不让它看出来可以放到缓存中,设定一个时间抽,指定时间取一次,很多网站是这样做得。
你的方法可以试将文章id放到数组,然后序列话一下,存入cookie试一下下。
------解决方案--------------------
将用户查看的文章标题记录到cookie,下次用户再次打开网页查看该篇文章,就会有上次查看的记录,
这个有点像你做购物网站浏览商品的时候,下次再去看的时候,就有你上次浏览记录。

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn