getMessage()); } $user_id = $_SESSION['user_id']; $error = ''; $success = ''; $link_expired = false; 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. Zmiana adresu email jest zablokowana.')); exit(); } // Pobranie danych użytkownika try { $stmt = $pdo->prepare("SELECT email, email_change_code, email_change_expires, new_email FROM users WHERE id = ?"); $stmt->execute([$user_id]); $userData = $stmt->fetch(PDO::FETCH_ASSOC); if (!$userData) { die("Nie znaleziono użytkownika"); } } catch (PDOException $e) { die("Błąd bazy danych: " . $e->getMessage() . "

Czy dodałeś kolumny email_change_code, email_change_expires i new_email do tabeli users?

Wykonaj w phpMyAdmin:
ALTER TABLE users\nADD COLUMN email_change_code VARCHAR(6) NULL,\nADD COLUMN email_change_expires DATETIME NULL,\nADD COLUMN new_email VARCHAR(255) NULL;
"); } // Jeśli użytkownik nie ma kodu lub nowego emaila, przekieruj do żądania if (empty($userData['email_change_code']) || empty($userData['new_email'])) { header('Location: /account/settings/?error=' . urlencode('Link do zmiany emaila jest nieważny lub został już użyty.')); exit(); } // Sprawdzenie czy kod wygasł if (!empty($userData['email_change_expires'])) { if (strtotime($userData['email_change_expires']) < time()) { $link_expired = true; } } // Obsługa resend - wysyła kod na NOWY email if (isset($_GET['resend']) && $_GET['resend'] == '1') { $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')); $update = $pdo->prepare("UPDATE users SET email_change_code = ?, email_change_expires = ? WHERE id = ?"); $update->execute([$reset_code, $reset_expires, $user_id]); require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/smtp_helper.php'; $subject = "Nowy kod weryfikacyjny - Wspólnie"; $message = "

📧 Nowy kod weryfikacyjny

Twój nowy kod weryfikacyjny to:

$reset_code

Kod jest ważny przez 15 minut.

"; sendEmailSMTP($userData['new_email'], $subject, $message); $success = "Nowy kod został wysłany na nowy adres email!"; $link_expired = false; } // Weryfikacja kodu i zmiana emaila if ($_SERVER["REQUEST_METHOD"] === "POST" && !$link_expired) { $code = trim($_POST["code"] ?? ""); if (empty($code)) { $error = "Kod weryfikacyjny jest wymagany."; } else { // Pobierz aktualne dane użytkownika $stmt = $pdo->prepare("SELECT email, email_change_code, email_change_expires, new_email FROM users WHERE id = ?"); $stmt->execute([$user_id]); $user = $stmt->fetch(PDO::FETCH_ASSOC); if (strtotime($user['email_change_expires']) < time()) { $error = "Kod weryfikacyjny wygasł."; $link_expired = true; } elseif ($user['email_change_code'] != $code) { $error = "Nieprawidłowy kod weryfikacyjny."; } else { // Kod poprawny - zmień email $new_email = $user['new_email']; $old_email = $user['email']; $update = $pdo->prepare("UPDATE users SET email = ?, email_change_code = NULL, email_change_expires = NULL, new_email = NULL WHERE id = ?"); $update->execute([$new_email, $user_id]); // Wyślij powiadomienie na stary i nowy email require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/smtp_helper.php'; $subject_old = "Zmiana adresu email - Wspólnie"; $message_old = "

✅ Email został zmieniony

Adres email powiązany z Twoim kontem został pomyślnie zmieniony.

Stary email: " . htmlspecialchars($old_email) . "
Nowy email: " . htmlspecialchars($new_email) . "

Jeśli to nie Ty zmieniłeś email, skontaktuj się z nami natychmiast!

"; $subject_new = "Witamy pod nowym adresem - Wspólnie"; $message_new = "

🎉 Email został zmieniony

Ten adres email został pomyślnie powiązany z Twoim kontem w serwisie Wspólnie.

Od teraz możesz logować się używając tego adresu email.

"; sendEmailSMTP($old_email, $subject_old, $message_old); sendEmailSMTP($new_email, $subject_new, $message_new); header('Location: /account/settings/?success=email_changed'); exit(); } } } ?> Zmiana adresu email | Wspólnie

📧 Zmiana adresu email

Wpisz 6-cyfrowy kod wysłany na nowy adres email

⏰ Kod wygasł!
Twój kod weryfikacyjny stracił ważność po 15 minutach.
Kliknij przycisk poniżej aby otrzymać nowy kod.
📧 Obecny email:
🆕 Nowy email:
⏱️ Kod ważny: 15 minut od wysłania

Formularz jest zablokowany. Kliknij "Wyślij kod ponownie" aby otrzymać nowy kod.

← Powrót do ustawień