getMessage()); } $user_id = $_SESSION['user_id']; require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/account_suspension.php'; $suspensionState = og_is_current_user_suspended($pdo); if (!empty($suspensionState['is_suspended'])) { header('Location: /account/settings/?error=' . urlencode('Twoje konto jest zawieszone. Wysłanie kodu zmiany hasła jest zablokowane.')); exit(); } // Pobranie danych użytkownika $stmt = $pdo->prepare("SELECT email FROM users WHERE id = ?"); $stmt->execute([$user_id]); $userData = $stmt->fetch(PDO::FETCH_ASSOC); if (!$userData) { die("Nie znaleziono użytkownika"); } // Generowanie 6-cyfrowego kodu $reset_code = str_pad(random_int(0, 999999), 6, '0', STR_PAD_LEFT); $reset_expires = date('Y-m-d H:i:s', strtotime('+15 minutes')); // Zapisanie kodu w bazie try { $update = $pdo->prepare("UPDATE users SET password_reset_code = ?, password_reset_expires = ? WHERE id = ?"); $update->execute([$reset_code, $reset_expires, $user_id]); } catch (PDOException $e) { die("Błąd aktualizacji bazy: " . $e->getMessage() . "

Czy dodałeś kolumny password_reset_code i password_reset_expires do tabeli users?"); } // Wysłanie emaila z kodem require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/smtp_helper.php'; $subject = "Kod zmiany hasła - Wspólnie"; $message = "

🔒 Zmiana hasła

Otrzymaliśmy prośbę o zmianę hasła do Twojego konta.

Twój kod weryfikacyjny to:

$reset_code

Kod jest ważny przez 15 minut.

Jeśli to nie Ty zażądałeś zmiany hasła, zignoruj tę wiadomość.

"; sendEmailSMTP($userData['email'], $subject, $message); // Przekierowanie do strony weryfikacji header('Location: /account/settings/change_password_verify.php'); exit();