我试图弄清楚在尝试登录X次尝试失败后如何锁定用户的帐户。我知道我需要一个计数器来判断失败的次数。到目前为止,这是我的伪代码:
int i=0;
when login fails{
i++; }
if(i == 3) {
lock account for 3 minutes; }
以下是我的两个问题:
- 如何锁定用户的帐户?
- 如何将用户锁定3分钟并且不允许他们刷新页面并再次尝试3次?
答案 0 :(得分:2)
我建议您在当前用户的数据库的users
表中存储阻止用户的时间。
然后,在加载您网站上的任何页面页面时,您应该检查数据库中的此字段并将其与当前时间进行比较。如果差异大于3分钟,则可以从数据库中删除“阻止的用户”标志,并将用户设置为未阻止。
答案 1 :(得分:0)
您可以使用会话:
session_start();
if (!isset($_SESSION['LOGIN_ATTEMPTS'], $_SESSION['LAST_LOGIN_ATTEMPT'])){
$_SESSION['LOGIN_ATTEMPTS'] = 0 ;
$_SESSION['LAST_LOGIN_ATTEMPT'] = null ;
}
if (isset($_POST['login'])){
$_SESSION['LOGIN_ATTEMPTS'] += 1 ;
$_SESSION['LAST_LOGIN_ATTEMPT'] = time("now") ;
}