我正在编写一个应用程序,其中要求限制用户可以从单个IP地址登录的数量(作为停止垃圾邮件的方式)。 我们不能出于某种原因使用验证码!
我能想到的唯一两种方法就是在数据库中存储来自每个IP的请求数。 要么 存储跟踪cookie,其中包含相关信息。
现在,第一种模式的缺点是数据库流量过多 - 应用程序将被大量人使用。 将此信息存储为Cookie的缺点是,用户可以清除它们,然后重新开始新的广告。
我需要建议,如果可以采用一种方法可以处理高数据流量和基于cookie的跟踪松散绑定。
答案 0 :(得分:1)
您正在谈论“登录”和网络应用程序,因此您有某种会话持久 somwhere 。创建这些会话时,您需要跟踪每个IP的活动会话数,并在达到该阈值时不分配新会话。
如果没有关于您的框架/环境的更多具体信息,那就是任何人都可以提供的最佳答案。
还要注意,由于NAT(网络地址转换),这种方法在很多方面都失败了。例如,我们的办公室只有一百个人的公共IP地址。内部网络位于专用IP空间。
答案 1 :(得分:0)
如果你想获取IP并存储在某个地方,可以使用$_SERVER['REMOTE_ADDR']
获取用户的IP,在数据库中创建一个类似“ip”的字段,然后在SQL中进行查询以检查如果使用IP。
还有其他跟踪方式,比如Flash Cookie,人们通常不知道它的存在,所以大多数人都不知道如何清除它。