0

我以前问过这个问题,但现在我会更具体。我有一个投票系统,任何人都可以投票(无需成为注册用户)。我想只允许用户投票一次。最好的方法,我猜猜,会通过布尔值,不是吗?所以我只是要求你向我展示一个更好的方法。这是代码:

<?php
$tries=0;
if (((isset($_POST['hidden']))&&$tries<2) {
    $tries++;
    $likes++;
    $up = mysql_query("Update videos SET Likes='$likes' WHERE Name='$name'");
}
?>
4

2 回答 2

1

如果用户没有注册,你真的无法判断他之前是否投票过。一些常见的方法(远非防弹)是将每个 IP 的投票记录保留一段时间(因此,如果日志表包含此内容的 IP,则不接受投票),或者使用 cookie 来了解是否人已投票。

以上都不是100%!这就是为什么大多数公司不允许匿名投票。

于 2013-03-12T16:15:30.213 回答
0

我知道一家初创公司需要的东西几乎和你一样。他们实施了一些控制,比如这个网站

https://panopticlick.eff.org/index.php?action=log&js=yes

这告诉你:

在迄今为止测试的2,762,716 个中,您的浏览器指纹似乎是独一无二的 。

目前,我们估计您的浏览器的指纹至少能传达 21.4 位的识别信息。

这意味着它会生成您的用户代理、SO 和其他参数的指纹。这不是一个独立的实现,因为那不是 100% 有效的。他们还实施了一种手动投票验证方法,该方法处理那些不适合过滤器的指纹结果。

将此应用于您的案例。您将需要实施此指纹解决方案(或其他类似解决方案)并手动检查异常(用户/投票越多,异常越多)。

希望能帮助到你。

于 2013-03-12T16:27:58.997 回答