prepare('SELECT * FROM admins WHERE username = ?'); $stmt->execute([$username]); $admin = $stmt->fetch(); if (!$admin || !password_verify((string)($_POST['password'] ?? ''), $admin['password_hash'])) { record_auth_attempt('admin_login', $username, false); throw new RuntimeException('管理员账号或密码错误。'); } session_regenerate_id(true); $_SESSION['admin_id'] = (int)$admin['id']; record_auth_attempt('admin_login', $username, true); db()->prepare('UPDATE admins SET last_login_at = ? WHERE id = ?')->execute([now(), $admin['id']]); admin_audit(db(), 'admin_login', 'admin', (int)$admin['id']); redirect('/admin/index.php'); } catch (Throwable $e) { $error = $e instanceof RuntimeException ? $e->getMessage() : '登录失败。'; } } ?>