我在网站的主页上设置了一些内容,就像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'));
}
?>
问题在于它仅限制一个内容,但我可以投票给其他内容。我该如何防止这种情况发生?
感谢。
答案 0 :(得分:0)
此代码实际上仅为给定的content-id设置名为voter
的cookie。在另一篇文章上投票将有效,但旧信息将被删除。
如果您正在使用数据库并且不想让用户注册,您只需存储IP-POST_ID对并检查服务器端。此时,除了存储偏好或其他内容之外,不需要对cookie执行任何操作。
正如您(或可能没有)意识到的那样,这也意味着只有来自给定IP的一个用户可以投票,这意味着公司网络等最有可能被视为一个用户,即使有数百人在工作(并可能投票)。