-3

我需要在 5 次登录尝试失败后阻止用户。我有一个名为“login_attempts”的表,它有 3 列“userid”、“user”、“attempts”。我还有一个 .php 脚本,它检查用户的凭据,如“用户名”和“密码”,如果用户输入的密码不正确,他/她将有 5 次机会。现在可能一切正常,即使数据也保存在“login_attempts”表中,但在 5 次不成功的登录尝试后,我需要阻止用户 15 分钟……这是怎么做到的……请帮忙。我有 2 个单独的文件“process.php”和“login.php”。请指导我...</p>

谢谢

4

3 回答 3

2

在 login_attempts 表中添加一个时间戳字段,用于跟踪用户上次尝试登录的时间以及尝试次数。当您对用户进行身份验证时,请检查尝试次数字段是否为 5 或更多,以及他/她上次尝试登录的时间。如果上次尝试时间少于 15 分钟,则拒绝该请求。当用户成功登录时,不要忘记重置计数。

于 2013-03-14T20:44:16.100 回答
0

一种可能的解决方案是向名为 next_available_retry_time 的数据库添加另一个字段(或任何您喜欢的字段)。当尝试次数 == 5 时,将 next_available_retry_time 设置为未来 15 分钟,并将尝试次数重置为 0(因此它可以重新启动)。

然后在您的代码中,在您测试用户名、密码之前,检查 now() > next_available_retry_time。如果不是,则拒绝登录尝试。否则,继续您现有的逻辑。

于 2013-03-14T20:43:13.013 回答
0

我会在 login_attempts 表中为 last_attempt 添加一列,然后在您进行身份验证时添加一个检查以查看是否

attempts > 5
last_attempt in the past 15 minutes

如果这两个都为真,则不允许用户登录

如果 last_attempt 超过 15 分钟,则将尝试次数重置为 1 并再次尝试进行身份验证

抱歉伪代码,希望它有帮助。

于 2013-03-14T20:43:19.487 回答