以教务系统学生端登陆为例,登陆错误限制5次,超过10分钟内无法登陆,该如何实现?
session_start(); // 开启 Session
$max_attempts = 5; // 最多尝试次数
$block_duration = 10 * 60; // 阻塞时间(单位:秒)
if (isset($_SESSION['attempts'])) {
$attempts = $_SESSION['attempts'];
} else {
$attempts = 0;
}
if (isset($_SESSION['last_attempt_time'])) {
$last_attempt_time = $_SESSION['last_attempt_time'];
} else {
$last_attempt_time = 0;
}
if ($attempts >= $max_attempts && time() - $last_attempt_time < $block_duration) {
$remaining_time = $block_duration - (time() - $last_attempt_time);
echo '您已经尝试了 ' . $attempts . ' 次,请在 ' . $remaining_time . ' 秒后再试。';
} else {
// 处理登录逻辑
if ($login_successful) {
// 登录成功,清空记录
$_SESSION['attempts'] = 0;
$_SESSION['last_attempt_time'] = 0;
} else {
// 登录失败,记录次数和时间
$_SESSION['attempts'] = $attempts + 1;
$_SESSION['last_attempt_time'] = time();
echo '账号或密码错误。';
}
}