PHP暂时禁止IP

时间:2009-07-09 13:57:16

标签: php

我正在为我的公司创建一个联系表单,我希望尽可能地防范垃圾邮件。我已经创建了一个蜜罐+会话检查,但我也希望这样做,以便每x分钟只能提交一次表格。换句话说,禁止知识产权使用表格x时间。

这样做的最佳解决方案是什么?

我能想到一些,但没有一个看起来很理想。

6 个答案:

答案 0 :(得分:5)

每次提交表单时将用户IP存储在数据库中,以及时间戳。当用户提交表单时,首先检查数据库以查看它们是否在时间范围内提交。

虽然用户可以使用相同的IP的大型网络可能会出现一些问题。这取决于目标受众,真的。

答案 1 :(得分:2)

数据库。将IP存储在那里并为它们加上时间戳。

答案 2 :(得分:0)

我看到在一些博客上使用的一个很好的方法是使用JavaScript来防止机器人。就像在onsubmit()事件中一样,将表单的方法从GET更改为POST。你也可以做其他魔术。机器人在执行JavaScript方面非常无能为力,因此您可以利用它。

另一方面 - 这可能会损害0.0000001%未启用JavaScript的用户。嗯,你的选择真的。 :)

答案 3 :(得分:0)

如果您不介意将表单限制为支持cookie的浏览器(删除一些“浏览器”,我认为是机器人),您可以这样做:

表单页面加载,它检查带有时间戳的会话变量。如果没有找到,则会创建一个并重定向到同一页面,但使用指定“action = start”的GET参数或其他内容。所以在第二次加载时,如果你看到$ _GET ['action'] =='start',你可以检查那个会话变量。如果找不到,可以在其他地方重定向,说明需要cookie。

现在你可以检查时间戳,如果时间太早,你可以做其他事情。

此方法至少允许使用相同的IP,因为如果您在防火墙后面处理大量人员,则不必阻止整个组。

答案 4 :(得分:0)

数据库的东西可能是你最好的选择,因为它不需要它们允许任何东西,它只是记录它们的数据。唯一的问题是他们可以屏蔽他们的IP或从多个地方击中它。我尝试使用数据库交叉引用其会话/ cookie上的IP。如果同一个人从同一个IP地址快速访问您的网站,这一点很明显,但如果您创建用户ID,则可以看到他们是否正在快速切换IP地址。

答案 5 :(得分:0)

使用某种cron脚本(或者至少是一个已编写并处于待机状态的工具)准备好清理一个确实可以通过的混乱也没有什么坏处。对于我的网站,我写的是在非常小的时间内(10秒内)从多个ips标记完全相同的提交。

至少你可以写一些查询来向评论表单显示可疑的提交内容。