限制使用cookie对同一页面上的多个内容进行投票

时间:2015-06-24 17:34:39

标签: php cookies

我在网站的主页上设置了一些内容,就像reddit一样,我在网站上没有用户注册功能。我没有计划得到一个。我的目标是限制人们对同一内容进行多次投票。我打算用数据库和cookie上的IP来检查这个。我的饼干有问题......

这是我的代码

  <?php
    $ContentID = intval( $_POST['id'] );

    $uniqueID = 'Ju?hG&F0yh9?=/6*GVfd-d8u6f86hp'.$ContentID;
    setcookie ('voter', $uniqueID,time()+3600*24, '/', DOMAIN);


    if ( $_COOKIE['voter'] == $uniqueID ) {
        echo json_encode(array('success'=>'false', 'message'=>'Just one for same post.'));  
    }else{
        echo json_encode(array('success'=>'false', 'message'=>'voted'));
    }
  ?>    

问题在于它仅限制一个内容,但我可以投票给其他内容。我该如何防止这种情况发生?

感谢。

1 个答案:

答案 0 :(得分:0)

此代码实际上仅为给定的content-id设置名为voter的cookie。在另一篇文章上投票将有效,但旧信息将被删除。

如果您正在使用数据库并且不想让用户注册,您只需存储IP-POST_ID对并检查服务器端。此时,除了存储偏好或其他内容之外,不需要对cookie执行任何操作。

正如您(或可能没有)意识到的那样,这也意味着只有来自给定IP的一个用户可以投票,这意味着公司网络等最有可能被视为一个用户,即使有数百人在工作(并可能投票)。