通过计数限制某些操作访问?

时间:2011-06-01 13:40:38

标签: php

这更像是一个安全问题。 实施诸如“按IP计算每x时间的特定页面访问次数”并在超出限制时阻止该IP地址的最佳做法是什么?

一些步骤:

  1. 用户进入网站
  2. 用户选择要购买的产品
  3. 填写表格并提交表格
  4. 重定向到付款网关
  5. 如何每30秒限制5个表单子项?如果用户每30个IP使6个被阻止30分钟?

    感谢。

1 个答案:

答案 0 :(得分:1)

您将要在数据库中存储操作或请求以及它们的time()。然后运行一个简单的mysql_query()来检查用户是否超出了他们的限制。例如

"SELECT * FROM `requests` WHERE 
    `request_time` > '".(time() - (30 * 60))."' AND
    `ip_address` = '".$_SERVER['REMOTE_ADDR']."';"

此查询的mysql_num_rows()应返回少于5。

每次用户加载页面或提交表单时都可以运行此查询,只需结束脚本的执行即可。

您可能还希望偶尔运行查询以删除旧行,可能使用cron作业。