2015-01-09 48 views
-1

我正在为我的CMS页面创建一个锁定系统。这个想法是在24小时内发生5次错误尝试后超时48小时。但是,如果用户在24小时内输入了正确的密码,那么应该删除超时帐户。在成功尝试和尝试失败后,我遇到了超时和解锁用户帐户的问题。为很多登录尝试失败后计时用户

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

我已经创建了一个表来存储UNSUCCESSFUL尝试。我需要帮助,让代码检查最近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) . ""; 
+1

我不确定我是否理解。如果用户输入错误密码的次数太多,你想锁定用户,但如果他们输入正确的密码,你会让他们回来?这种方式不是首先打破这种锁定的目的吗? –

+0

这是正确的,是的。它的规格我必须经过。我想改变它,但不能。 –

+0

我会认为像这样的安全问题将是一个很好的理由来纠正规范。 –

回答

0

忽略你不真正锁定任何人的部分我会用不同的方法。

我场last_bad_login_timebad_login_attempts添加到您的用户表。每当使用者输入一个错误的密码,并且在时间跨度X中没有N次尝试,就会增加#attempts(注意溢出,哈哈)并更新时间戳。 如果用户正确登录两个字段(或只是#attempts)。

+0

你好,谢谢你,我以前有过尝试colomn,但我的主管说他不喜欢那样。他希望它做的只是在24小时内连续尝试5次,如果超过5次,则计时。如果他们在24小时内尝试了5次后输入了正确的密码,然后让他们进来。他说我需要创建一个子查询,只是有点失落,我是一个有着小编程经验的实习生。 –

+0

不客气。 “定时出去”到底是什么意思? – m02ph3u5