我试图弄清楚在 X 多次尝试登录失败后如何锁定用户的帐户。我知道我需要一个计数器来记录失败的尝试次数。到目前为止,这是我用于此任务的伪代码:
int i=0;
when login fails{
i++; }
if(i == 3) {
lock account for 3 minutes; }
这是我的两个问题:
-我如何锁定用户的帐户?
-如何将用户锁定 3 分钟,不允许他们刷新页面并再尝试 3 次?
我建议您将阻止用户的时间存储在users
当前用户的数据库表中。
然后,在加载您网站上的任何页面页面时,您应该检查数据库中的此字段并将其与当前时间进行比较。如果差异大于 3 分钟,那么您可以从数据库中删除“已阻止用户”标志并将用户设置为未阻止。
您可以为此使用会话:
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") ;
}