0, 'time' => time()]; $loginErr = $_SESSION[$lockKey]; if (time() - $loginErr['time'] > 300) { $_SESSION[$lockKey] = ['num' => 0, 'time' => time()]; $loginErr = $_SESSION[$lockKey]; } // 登录提交处理 if ($_POST) { $username = trim($_POST['username'] ?? ''); $pwd = trim($_POST['pwd'] ?? ''); if ($loginErr['num'] >= 5) { $errMsg = "密码错误次数过多,请等待5分钟后重试"; } elseif (!$username || !$pwd) { $errMsg = "账号与密码不能为空"; } else { // 连接monitor权限库查询用户 $connMonitor = mysqli_connect($dbHost, $dbUser, $dbPass, $dbMonitorName); if (!$connMonitor) { $errMsg = "数据库连接失败:" . mysqli_connect_error(); } else { mysqli_set_charset($connMonitor, "utf8mb4"); $u = mysqli_real_escape_string($connMonitor, $username); // 适配真实表字段,新增is_admin查询 $sql = "SELECT id,username,password,role_id,is_admin,enable FROM sys_user WHERE username='$u' LIMIT 1"; $res = mysqli_query($connMonitor, $sql); // 新增判断:查询成功才读取数据 if ($res) { $user = mysqli_fetch_assoc($res); // 先判断账号是否启用 if (!$user) { $_SESSION[$lockKey]['num']++; $errMsg = "账号或密码输入错误"; } elseif ($user['enable'] != 1) { $errMsg = "该账号已被禁用,无法登录"; } elseif (password_verify($pwd, $user['password'])) { // 登录成功逻辑 $_SESSION[$lockKey] = ['num' => 0, 'time' => time()]; $_SESSION['user_id'] = $user['id']; $_SESSION['username'] = $user['username']; $_SESSION['role_id'] = $user['role_id']; $_SESSION['is_admin'] = $user['is_admin']; $_SESSION['login_time'] = time(); mysqli_query($connMonitor, "UPDATE sys_user SET last_login=NOW() WHERE id=" . $user['id']); mysqli_close($connMonitor); header("Location: dashboard.php"); exit; } else { $_SESSION[$lockKey]['num']++; $errMsg = "账号或密码输入错误"; } } else { // 捕获SQL执行失败原因 $errMsg = "查询用户失败:" . mysqli_error($connMonitor); } mysqli_close($connMonitor); } } } ?> Advantest 爱德万测试 - 运维监控登录
Advantest
爱德万测试 · 运维告警监控平台