exec("SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci"); } catch (PDOException $e) { die("Błąd połączenia z bazą danych: " . $e->getMessage()); } $user_id = $_SESSION['user_id']; $error = ''; // 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"); } // Walidacja nowego emaila function validateEmail($email) { if (empty($email)) { return "Email jest wymagany"; } if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { return "Nieprawidłowy format adresu email"; } if (strlen($email) > 255) { return "Email jest za długi (max 255 znaków)"; } return null; } if ($_SERVER["REQUEST_METHOD"] === "POST") { $new_email = trim($_POST["new_email"] ?? ""); $validation_error = validateEmail($new_email); if ($validation_error) { $error = $validation_error; } elseif (strtolower($new_email) === strtolower($userData['email'])) { $error = "Nowy email nie może być taki sam jak obecny email."; } else { // Sprawdź czy email nie jest już zajęty $check = $pdo->prepare("SELECT id FROM users WHERE LOWER(email) = LOWER(?) AND id != ?"); $check->execute([$new_email, $user_id]); if ($check->fetch()) { $error = "Ten adres email jest już zajęty."; } else { // 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 email_change_code = ?, email_change_expires = ?, new_email = ? WHERE id = ?"); $update->execute([$reset_code, $reset_expires, $new_email, $user_id]); } catch (PDOException $e) { die("Błąd aktualizacji bazy: " . $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;
"); } // Wysłanie emaila z kodem NA NOWY ADRES require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/smtp_helper.php'; $subject = "Kod weryfikacyjny - Wspólnie"; $message = "

📧 Weryfikacja nowego adresu email

Otrzymaliśmy prośbę o zmianę adresu email na to konto w serwisie Wspólnie.

Twój kod weryfikacyjny to:

$reset_code

Kod jest ważny przez 15 minut.

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

"; sendEmailSMTP($new_email, $subject, $message); // Przekierowanie do strony weryfikacji header('Location: /account/settings/change_email_verify.php'); exit(); } } } ?> Zmiana adresu email | Wspólnie

📧 Zmiana adresu email

Wprowadź nowy adres email

📧 Obecny email:

ℹ️ Kod weryfikacyjny zostanie wysłany na nowy adres email, aby potwierdzić, że masz do niego dostęp.
← Powrót do ustawień