【问题标题】:Limit Daily Access限制每日访问
【发布时间】:2011-07-19 02:42:25
【问题描述】:

我想在我的网站中实现一个功能来限制对某个页面的访问。

每个 IP 每天应该允许 2 次访问。

我正在考虑创建一个 mysql 表并在 ip+times 中写入该 ip 访问该网站,然后创建一个每 24 小时删除所有条目的 cron 作业。

但我担心他可能会导致服务器负载过多(以防我每天访问数百次)。有没有更好或更简单的方法来限制每个 IP 的每日访问次数为两次?

我也在考虑使用 cookie 或会话,但我有 0 个计划来创建一个可以完成我需要的工作的 cookie....

感谢您的任何建议!

编辑:

在有用的 cmets 之后,还有两件事我需要建议:

-公共代理检测脚本是否足以至少阻止匿名和网络代理?

-是否可以单独限制每个 IP 的访问并创建一个脚本,在第一次访问后 24 小时内删除该 IP 的条目?而不是让 cron 作业每 24 小时删除一次所有数据,而不管访问者何时首次访问我的网站?

【问题讨论】:

  • 如果我每次都以不同的 IP 访问您的页面并获得无限访问权限,这有关系吗?或者它只是一个或多或少的解决方案?
  • 其实有关系,但我希望能找到代理检测脚本或类似的东西,如果有这样的事情(?)
  • 有什么建议可以确保至少阻止大部分公共代理?
  • 重点是,您可能走错了路。但这只是一个假设,因为您没有告诉我们您项目的内容。

标签: php mysql session cookies ip


【解决方案1】:

保存ip、时间和数据库访问次数没问题,mysql数据库几百行不成问题(别忘了给表设置索引)。

但请注意,使用共享 IP 的用户可能无法访问您的页面。

使用 cookie 是有问题的,因为用户可以控制它而您不能限制它。当然,这取决于您的应用程序阻止用户aftex n 访问的重要性。

【讨论】:

  • 除了共享IP问题之外,还有一个问题是可以通过使用代理来绕过限制。因此,如果您必须确定这一点,则只能进行用户注册。
  • 您好,限制很重要。用户注册的问题是,我计划在没有注册的情况下允许 2 次搜索,而不是在访问者达到 2 次搜索的限制后立即要求注册。我可能会将 IP 保存在表格中,并尝试找到某种代理检测脚本。对于共享 IP 的用户:我将在网站上通知此问题,并附上我的联系页面的链接。你怎么看?
  • @markus,即使是用户注册也可以轻松绕过(除非通过短信或帖子或比电子邮件确认更高级的方式确认)。
  • 是的,但在 Facebook 和 Google 时代,通过 openAuth 标准的方式非常好。
【解决方案2】:

会话和/或 cookie 不是最安全的解决方案:

  • 会话会在一段时间后过期(通常是半小时,默认设置)
  • 用户可以删除cookies;或者他可以更换浏览器


你的想法似乎还不错;如果您每天只有几百次点击,它应该可以处理负载,我想 - 只需在您的 MySQL 表上使用正确的索引,以帮助您进行选择以检查 IP 是否已经存在.


但请注意,您可以拥有多个用户,使用相同的 IP 地址 - 例如,同一公司的所有人通常共享相同的 IP。

【讨论】:

  • 您好,感谢您的意见!关于 shaed Ip 问题:我认为没有办法解决,所以我会通知用户并让他们与我联系。
猜你喜欢
  • 1970-01-01
  • 2018-03-19
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
  • 2021-09-21
相关资源
最近更新 更多