PDO::ERRMODE_EXCEPTION] ); $stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?"); $stmt->execute([$username]); $user = $stmt->fetch(); if ($user && password_verify($password, $user['password'])) { if ($user['is_blocked']) { $error = "Аккаунт заблокирован: " . htmlspecialchars($user['block_reason']); } else { $_SESSION['user_id'] = $user['id']; $_SESSION['username'] = $user['username']; $_SESSION['is_moderator'] = $user['is_moderator']; $stmt = $pdo->prepare("UPDATE users SET login_attempts = 0, last_attempt = NULL WHERE id = ?"); $stmt->execute([$user['id']]); header("Location: index.php"); exit; } } else { if ($user) { $stmt = $pdo->prepare("UPDATE users SET login_attempts = login_attempts + 1, last_attempt = CURRENT_TIMESTAMP WHERE id = ?"); $stmt->execute([$user['id']]); if ($user['login_attempts'] >= 4) { $stmt = $pdo->prepare("UPDATE users SET is_blocked = 1, block_reason = 'Превышено количество попыток входа' WHERE id = ?"); $stmt->execute([$user['id']]); $error = "Аккаунт заблокирован из-за превышения количества попыток входа"; } else { $error = "Неверный пароль"; } } else { $error = "Пользователь не найден"; } } } catch (PDOException $e) { $error = "Ошибка сервера"; } } ?>
Нет аккаунта? Зарегистрироваться