12]); if ($hash === false) { $_SESSION['error'] = 'Erreur lors du hachage du mot de passe.'; header('Location: /admin/account.php'); exit; } // 4. Write credentials file. $configContent = ' 12]);"' . "\n" . ' */' . "\n" . "\n" . 'define(\'ADMIN_PASSWORD_HASH\', ' . var_export($hash, true) . ');' . "\n"; // Write atomically via a temp file. $tmpFile = $credentialsFile . '.tmp.' . bin2hex(random_bytes(6)); if (file_put_contents($tmpFile, $configContent, LOCK_EX) === false) { @unlink($tmpFile); $_SESSION['error'] = 'Impossible d\'écrire le fichier de configuration. Vérifiez les permissions sur config/.'; header('Location: /admin/account.php'); exit; } if (!rename($tmpFile, $credentialsFile)) { @unlink($tmpFile); $_SESSION['error'] = 'Impossible de mettre à jour le fichier de configuration.'; header('Location: /admin/account.php'); exit; } // 5. Regenerate session (password changed — invalidate old sessions). session_regenerate_id(true); $_SESSION['admin_authenticated'] = true; $_SESSION['success'] = $hasPassword ? 'Mot de passe mis à jour avec succès.' : 'Mot de passe défini avec succès. L\'authentification PHP est maintenant active.'; header('Location: /admin/account.php'); exit;