如何创建一种方法来临时阻止 IP 多次访问表单?
我正在寻找想法/方法来多次临时阻止 IP 访问我的网站/表单上的网页。
限制应该是这样的,一天内访问网页/表单的次数不得超过 5 次,否则它应该显示一条简单的文本消息,例如“来自您的 IP 的请求太多,请稍后再试,如果您觉得这是错误的,请联系我们”。
我希望通过 PHP 得到一些简单的东西,但我对任何事情都持开放态度。我不太确定如何使用数据库和cookie,但我确信我可以阅读它。
I'm looking for ideas/ways to temporarily block an ip from accessing a webpage on my site/form many times.
The limit should be something like, no more than 5 times in 1 day to the webpage/form otherwise it should show a simple text message like "Too many request from your ip, please try again later, if you feel like this is wrong, please contact us".
I hope for something simple via PHP but I'm open to anything really. I'm not really sure how to work with databases and cookies but I'm sure I can read up on it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
简单快捷的解决方案:
id,url,user_ip,request_number,date
如果不使用
INSERT ... ON DUPLICATE KEY UPDATE request_number = request_number+1
您也可以在网络服务器端使用阻止。例如,nginx 允许添加 ip 以进行动态拒绝。
Simple and quick solution :
id, url, user_ip, request_number, date
If not use
INSERT ... ON DUPLICATE KEY UPDATE request_number = request_number+1
Also you can use blocking on web-server side. For example, nginx allows to add ips for denying on fly.
我会设置带有时间戳和提交次数的 cookie,并根据当前时间检查时间戳。
不过 Cookie 可以被清除,因此您可能需要通过在 mysql 数据库中存储 IP 和时间戳来进行备份。在访问时,根据当前时间和提交次数检查数据库中的 IP。
I'd set cookies with a timestamp and number of submits, and check the timestamp against the current time.
Cookies can be cleared though, so you might want to back it up with storing IP's and timestamps in a mysql db. And on visit, check the ip in the db against current time and number of submits.
使用包含 2 列 IPAddress 和 Date 的表格
进行检查
Use a table with 2 columns IPAddress and Date
check it like