Php 在多次登录尝试失败后为用户计时

Php 在多次登录尝试失败后为用户计时,php,mysql,Php,Mysql,我正在为我的CMS页面创建一个锁定系统。这个想法是让用户在24小时内5次错误尝试后超时48小时。但是,如果用户在24小时内输入了正确的密码,则应删除超时的帐户。在成功尝试和不成功尝试后,我在超时和解锁用户帐户方面遇到问题 这个想法是在失败的尝试和超时发生后,如果他们正确输入密码,就会取消超时。如果他们在24小时内(超时后)再次输入错误的密码,则会忽略以前的错误尝试,并仅显示上次成功尝试后的最新失败尝试 我已经创建了一个表来存储失败的尝试。我需要帮助,让代码检查最近5次连续失败的尝试>帐户超时。然

我正在为我的CMS页面创建一个锁定系统。这个想法是让用户在24小时内5次错误尝试后超时48小时。但是,如果用户在24小时内输入了正确的密码,则应删除超时的帐户。在成功尝试和不成功尝试后,我在超时和解锁用户帐户方面遇到问题

这个想法是在失败的尝试和超时发生后,如果他们正确输入密码,就会取消超时。如果他们在24小时内(超时后)再次输入错误的密码,则会忽略以前的错误尝试,并仅显示上次成功尝试后的最新失败尝试

我已经创建了一个表来存储失败的尝试。我需要帮助,让代码检查最近5次连续失败的尝试>帐户超时。然后,如果用户输入了正确的密码(在24小时内)>删除超时

    $qry = "    SELECT 
                                CASE WHEN count(*) >= 5 THEN 0 ELSE 1 END as allowed_login 
                            FROM
                                cms_user_login_attempts
                            WHERE
                                cula_date_time >= DATE_SUB(CURRENT_TIMESTAMP, interval 48 hour) 
                            AND 
                                cula_user_id = " . $db->SQLString($row->user_id) . "";

忽略你没有把任何人锁在外面的部分,我会用另一种方法

我会在用户表中添加一个字段last_bad_login_time和bad_login_尝试。每当用户输入错误密码并且在timespan X中没有尝试过N次时,增加#次尝试次数(注意溢出,哈哈)并更新时间戳。
如果用户正确登录,则刷新两个字段(或仅刷新#次尝试)。

我不确定是否理解。如果用户多次输入错误的密码,您希望将其锁定,但如果用户输入了正确的密码,您会让他们返回吗?这种方式一开始就不能达到锁定的目的吗?没错,是的。这是我必须遵守的规范。我想更改它,但不能。我本以为这样的安全问题是质疑规范的一个很好的理由。但是如果他们被锁定,他们将如何使用正确的密码登录?我不知道如果他们每次输入正确的密码都能通过,怎么会有人被“锁定”。您好,谢谢,我以前有个专栏,但我的主管说他不喜欢这样。他所要做的就是查看过去的5次连续尝试,在24小时内,如果超过5次,则暂停。如果他们在24小时内尝试了5次后输入了正确的密码,请让他们输入。他说我需要创建一个子查询,只是有点不知所措,我是一名实习生,编程经验很小,哈哈。