解决方案 »

  1.   


    1、把COOKIE输出看看有什么值?
    2、把setcookie函数的返回值输出看看是否成功?没必要用hits.php页面做跳转
    直接把里面的代码放article.php就行了
      

  2.   

    我原来就是放在详情页,只是为了测试。放在详情页,效果一样的,代码如下
    <?php
    if(!isset($_COOKIE['hits'])){
       if($init->prepare('update article set hits=hits+1 where id=40')){
           $init->execute();
       }
    setcookie('hits',40,time()+86400,'/');   //设置一天一个cookie只能贡献一次点击量
    }esle{
       echo 'cookie已设置';
    }header('Location: http://localhost/article.php?id=40');
    ?>
    更有趣的是,不仅输出‘cookie已设置’,还自动增加次数,
    求解
      

  3.   

    你要限制某一篇文章的點擊。
    cookie name不能重複,否則id=40 id=41都用 $_COOKIE['hits'] 來記錄,就會重複了。
    應該改為
    $_COOKIE['hits'.$id]
    setcookie('hits'.$id, $id, time()+86400);
      

  4.   

    哦,楼上这个我已经改过了,谢谢提醒
    还是4楼那个新问题,
    明明cookie已经设置,都输出  ‘cookie已设置’ 了,按理说不应该自动增加次数
    可还是自动增加了
    我想问的是,那个更新操作的数据库链接用不用关闭,可能下面的脚本又执行了它,所以才增加了hits??
      

  5.   


    if(!isset($_COOKIE[$id])){
    if($init->prepare('update article set hits=hits+1 where id=?')){
    $init->bind_param('i',$id);
    $init->execute();
    $rows = $init->affected_rows;
    echo '行数为'.$rows;
    }
         setcookie($id,$id,time()+300,'/');
    }else{
    echo 'cookie已设置';
    }这个是放在文章详情页的
    第一下点击进去,显示:“行数为1”,点击数+1;
    第二次以及以后每次点击进去,都显示:‘cookie已设置’,但同时点击数+1;
    就是这个问题,困扰我快1天了
      

  6.   

    页面最前面加上ob_start();
    <?php
    ob_start();$id = 40;
    $cookiename = 'hits'.$id;if(!isset($_COOKIE[$cookiename])){
     echo 'update hits';
         setcookie($cookiename,$id,time()+300,'/');
    }else{
    echo 'cookie已设置';
    }
    ?>