如何避免PHP网站上的投票垃圾邮件

如何避免PHP网站上的投票垃圾邮件,php,Php,我正在我的网站上做一个投票系统 访客无需登录即可投票选择他们喜欢的产品。但是我怎样才能防止他们对一个产品多次点击“喜欢”或“不喜欢”按钮呢 我打算检测访客的IP地址,以避免投票垃圾邮件。这样好吗 谢谢你的建议 不,那不是个好办法。IP可以通过代理实现,例如大学和大型企业 你可以储存一块饼干,但这很容易避免 简洁的答案是,受控投票可能应该通过登录处理程序进行处理,而不仅仅是对公众开放。但是,如果你真的想让它对公众敞开大门,那么你必须接受这个决定可能带来的大量负面影响 我至少会带上饼干。除非有原因,

我正在我的网站上做一个投票系统

访客无需登录即可投票选择他们喜欢的产品。但是我怎样才能防止他们对一个产品多次点击“喜欢”或“不喜欢”按钮呢

我打算检测访客的IP地址,以避免投票垃圾邮件。这样好吗


谢谢你的建议

不,那不是个好办法。IP可以通过代理实现,例如大学和大型企业

你可以储存一块饼干,但这很容易避免

简洁的答案是,受控投票可能应该通过登录处理程序进行处理,而不仅仅是对公众开放。但是,如果你真的想让它对公众敞开大门,那么你必须接受这个决定可能带来的大量负面影响


我至少会带上饼干。除非有原因,否则不是所有人都愿意清除cookies来玩投票系统。

为登录用户创建数据库表。哥伦布会是这样的

ID | IP  | Browser  
ID将是自动增量值

使用以下功能获取IP(当然这不是100%可靠的方式。)

使用Javascript和浏览器。您可以通过ajax将其发布到php端。(我们这样做是为了提高检测的可靠性。)


然后,每当用户尝试投票时,检查此表。您可以搜索浏览器和ip。如果num_rows>0,则阻止(通知访问者)投票。

如果没有登录/IP,则可能会有一个cookie,并在他们投票时设置它。

如果没有登录,IP地址大约是唯一的方法。即便如此,这也不能充分证明给代理人的选票为什么会被否决?这似乎是一个很容易回答的问题。我错过了什么?没有办法阻止同一个人一次又一次地投票,这是糟糕的编程设计。有很多方法可以确保“普通”用户不继续投票,但你不应该为“普通”用户编程。@donutdan4114他说避免,而不是阻止。让他放松一下。@MikeB-是的,但是只需要一个人,一次,就可以搞乱每一项的计票。。这不是一个好的思考方式。是的,我将使用cookie而不是IP,谢谢你的帮助
 function getIP() {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) { //check ip from share internet
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { //to check ip is pass from proxy
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
        return $ip;
}