防止在调查中进行多次投票

时间:2013-03-01 10:30:38

标签: php mysql

我有一个survey,我想阻止用户多次投票。有没有人有我可以包含在页面中的代码

2 个答案:

答案 0 :(得分:0)

根据您的服务器/托管设置,以下是一些选项:

简单:用户投票时在浏览器上设置cookie。在接受投票之前检查cookie。可以轻松循环(删除cookie)

Med:获取IP并将其存储在表格中。在接受投票之前检查表格。 “难以”规避(记住代理人)。如果您接受NAT背后的人的投票并拥有相同的IP,则可能不是一个好的解决方案。

我会做什么:不要重新发明轮子。尝试调查另一个类似的在线服务。

答案 1 :(得分:0)

为了防止人们输入多个答案,您希望使用会话(这意味着您必须将该页面置于登录后面)。或者,您可以使用IP。

然而,IP发生了变化。这意味着,即使您仅使用IP并将其存储在某处(可能是加密的),因此无论谁使用该IP都无法再次应答,您也不会阻止我再次回答。

您是否考虑过启用社交网络登录,例如facbook和twitter或google +?这是登录的替代方案。

如果您对IP感到满意,您只需创建一个包含IP条目的数据库表即可。假设你已经拥有它,并且该表有三列(id,ip,survey)。

    <?
    //take the ip
     $user = $_SERVER['REMOTE_ADDR'];

//sanitize the ip (is it valid?). This can probably skipped with prepared statements but one never knows

    if (filter_var($user, FILTER_VALIDATE_IP)) {
    echo "This (ip_a) IP address is considered valid."; //for debug
    $user = md5( $user); //or whatever else if not md5

    $query = $mysqli->prepare("insert into iptable values (NULL, ?, ?)");
    //etc.

    }else{
    //return error
}
?>

我希望这会有所帮助。我更喜欢登录。