2013-03-01 75 views
-2

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

+3

首先向我们展示您的一些代码。 – Voitcus 2013-03-01 10:32:31

+2

'if(userHasVoted){call_Ignore_Vote(true);}' – Nanne 2013-03-01 10:33:19

+0

阅读本文http://stackoverflow.com/q/1042247/1920232 – peterm 2013-03-01 10:39:37

回答

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

我希望这会有所帮助。我宁愿登录。

+0

非常感谢......现在正在测试代码 – nick 2013-03-01 11:34:09

0

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

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

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

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