-2

我正在进行一项调查,我想阻止用户多次投票。有没有人有我可以包含在页面中的代码

4

2 回答 2

0

根据您的服务器/主机设置,这里有几个选项:

简单:当用户投票时,在浏览器上设置一个 cookie。在接受投票之前检查 cookie。可以轻松绕过(删除cookies)

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

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

于 2013-03-01T10:42:40.117 回答
0

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

但是,IP 发生了变化。这意味着,即使您仅使用 IP 并将其存储在某个地方(可能已加密),这样使用该 IP 的人将无法再次回答,您也不会阻止我再次回答。

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

如果您只对 IP 感到满意,您可以简单地创建一个包含 IP 条目的数据库表。假设您已经拥有它并且该表包含三列(id、ip、调查)。

    <?
    //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
}
?>

我希望这有帮助。不过我更喜欢登录。

于 2013-03-01T10:44:46.300 回答