我需要在5次登录尝试失败后阻止用户。我有一个名为“login_attempts”的表,它有3列“userid”,“user”,“attempts”。此外,我有一个.php脚本,用于检查用户的凭据,如'username'和'password',如果用户输入的密码不正确,他/她将有5次机会。现在可能一切都工作正常,即使数据也被保存在“login_attempts”表中,但在5次登录尝试失败后我需要阻止用户15分钟......怎么做...请帮助。我有2个单独的文件“process.php”和“login.php”。请指导我......
感谢
答案 0 :(得分:2)
在login_attempts表中添加一个时间戳字段,用于跟踪用户上次尝试登录的时间以及尝试次数。对用户进行身份验证时,请检查尝试字段是否为5或更多以及上次尝试登录的时间。如果上次尝试的时间少于15分钟,则拒绝该请求。当用户成功登录时,请不要忘记重置计数。
答案 1 :(得分:0)
一种可能的解决方案是向DB添加另一个名为next_available_retry_time的字段(或任何您喜欢的字段)。当尝试== 5时,将next_available_retry_time设置为15分钟,并将尝试重置为0(因此可以重新启动)。
然后在您的代码中,在测试用户名,密码之前,请检查now()> next_available_retry_time。如果不是,请拒绝登录尝试。否则,继续使用现有逻辑。
答案 2 :(得分:0)
我会在login_attempts表中为last_attempt添加一列,然后在进行身份验证时添加一项检查以查看是否
attempts > 5
last_attempt in the past 15 minutes
如果两者都属实,请不要让用户登录
如果last_attempt超过15分钟,则重置尝试为1并尝试再次进行身份验证
对于伪代码抱歉,希望它有所帮助。