我有一个survey,我想阻止用户多次投票。有没有人有我可以包含在页面中的代码
答案 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
}
?>
我希望这会有所帮助。我更喜欢登录。