prepare("SELECT email, mot_de_passe FROM compte WHERE id = ?"); $stmt->execute([$id]); $compte = $stmt->fetch(); if (! $compte) { die($translations['compte_introuvable']); } $email_actuel = $compte['email']; if ($_SERVER['REQUEST_METHOD'] === 'POST') { require_post_csrf(); $nouvel_email = trim($_POST['email'] ?? ''); $mdpActuel = $_POST['mot_de_passe_actuel'] ?? ''; $mdp1 = $_POST['mot_de_passe'] ?? ''; $mdp2 = $_POST['confirm_mot_de_passe'] ?? ''; if (! password_verify($mdpActuel, (string) ($compte['mot_de_passe'] ?? ''))) { $erreur = $translations['erreur_mdp_actuel_incorrect'] ?? 'Mot de passe actuel incorrect.'; } elseif (! filter_var($nouvel_email, FILTER_VALIDATE_EMAIL)) { $erreur = $translations['erreur_email_non_valide']; } elseif ($mdp1 && ($mdp1 !== $mdp2 || strlen($mdp1) < 8)) { $erreur = $translations['erreur_mdp_invalides']; } else { $stmt = $pdo->prepare("SELECT id FROM compte WHERE email = ? AND id != ?"); $stmt->execute([$nouvel_email, $id]); if ($stmt->fetch()) { $erreur = $translations['err_email_deja_utilise']; } else { if ($mdp1) { $hash = password_hash($mdp1, PASSWORD_DEFAULT); $stmt = $pdo->prepare("UPDATE compte SET email = ?, mot_de_passe = ? WHERE id = ?"); $stmt->execute([$nouvel_email, $hash, $id]); } else { $stmt = $pdo->prepare("UPDATE compte SET email = ? WHERE id = ?"); $stmt->execute([$nouvel_email, $id]); } $success = $translations['success_compte_mis_a_jour']; $email_actuel = $nouvel_email; // garder la valeur en mémoire pour la suite de la page $compte['mot_de_passe'] = $mdp1 ? $hash : $compte['mot_de_passe']; } } } require_once '../includes/header.php'; ?>