在PHP中通过IP地址和登录尝试次数限制用户访问
在这里,JS没有任何作用。
全局变量和特别是会话也是如此。
“我如何在相同的表单页面请求之间保存数据?”
你有很多选择 - 文件、数据库、共享内存。我建议使用数据库。
“我如何通过他们的IP禁止人们?”
检查他们的IP,然后按你所谓的“禁止”做任何事情?
你对会话有什么大的问题?
在这种情况下,会话很容易被伪造。只需清除你的cookies,你就开始了一个新的会话。在这种情况下,使用会话很容易被破坏,所以毫无意义。
然而,关于会话的问题是“如何在相同的表单页面请求之间保存数据”。我认为会话对于这个问题是一个可行和被广泛接受的解决方案。
我可以使用会话来跟踪用户在网站上的点击或导航吗?或者不安全吗?
限制用户IP和登录尝试次数的问题出现的原因是为了增加系统的安全性。为了解决这个问题,我们可以使用PHP来实现,因为JavaScript是在客户端执行的,并且可以很容易地被篡改。另外,JavaScript无法获取客户端的IP地址。
在PHP中,我们可以使用$_SERVER['REMOTE_ADDR']
来获取客户端的IP地址。为了跟踪登录失败的次数,我们需要使用数据库。当登录失败时,可以将其记录在一个表中,例如INSERT INTO failed_logins (user, ip) VALUES ('$username','{$_SERVER['REMOTE_ADDR']}')
。然后可以使用SELECT count(*) as attempts FROM failed_logins WHERE ip = '{$_SERVER['REMOTE_ADDR']}'
来检查登录失败的次数是否达到了限制。如果attempts
大于等于限制次数,则可以将该IP地址加入到banned_ips
表中,例如INSERT INTO banned_ips (ip) VALUES ('{$_SERVER['REMOTE_ADDR']}')
。
为了检查客户端是否被封禁,可以在每个请求处理开始时执行类似于SELECT * FROM banned_ips WHERE ip = '{$_SERVER['REMOTE_ADDR']}'
的操作。如果在表中找到了与该IP地址对应的行,则将该请求处理视为被封禁状态。