• 技术文章 >后端开发 >php教程

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

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


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

    网上找到个方法

    $gid = $_GET["id];
    if( !isset($_COOKIE["user"]) ){
    setcookie("user","newGuest",time()+3600);
    }else {
    setcookie("user","oldGuest");
    }

    if ( $_COOKIE["user"] != "oldGuest") {
    $hits_now = $row["hits"]+1;
    $pdo->exec("UPDATE `gamedb_game` SET `hits`='$hits_now' WHERE `id` = '$gid'");
    }



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

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

    所我想到不如这样?


    $gid = $_GET["id];
    if( !isset($_COOKIE["user"]) ){
    setcookie("user","newGuest",time()+3600);
    }else {
    setcookie("user","oldGuest_$gid");
    }

    if ( $_COOKIE["user"] != "oldGuest_$gid") {
    $hits_now = $row["hits"]+1;
    $pdo->exec("UPDATE `gamedb_game` SET `hits`='$hits_now' WHERE `id` = '$gid'");
    }


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

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

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

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

    想到的只有cookie


    这样的方法 对我自己主机,还有对用户,会如何?
    ------解决方案--------------------
    查看数增加刷新一次增加一次没问题呀,
    如果实在想用你的方法不让它看出来可以放到缓存中,设定一个时间抽,指定时间取一次,很多网站是这样做得。
    你的方法可以试将文章id放到数组,然后序列话一下,存入cookie试一下下。
    ------解决方案--------------------
    将用户查看的文章标题记录到cookie,下次用户再次打开网页查看该篇文章,就会有上次查看的记录,
    这个有点像你做购物网站浏览商品的时候,下次再去看的时候,就有你上次浏览记录。
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:nbsp COOKIE oldGuest hits user
    上一篇:学习php 类,遇到一个基础有关问题,求好心人解答 下一篇:这种怎么完整写出来求大神指教
    PHP编程就业班

    相关文章推荐

    • ThinkPHP控制器里javascript代码不能执行的解决方法_PHP• 注册页面之前先验证用户名是否存在的php代码_PHP• PHP程序员面试 切忌急功近利(更需要注重以后的发展)_php文摘_PHP• php写的发送附件的程序实例_PHP• 在PHP中利用XML技术构造远程服务(转)_PHP

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网