# Rapport de validation

Validation de la livraison corrigée du 18 août 2026.

## Contrôles automatisés réussis

- Validation syntaxique de **64 fichiers PHP** avec `php -l` : **0 erreur**.
- Validation syntaxique de `js/app.js` et `js/cms.js` avec `node --check` : **réussie**.
- Vérification du découpage SQL de `004_journal_26_articles.sql` : **58 instructions reconnues**.
- Vérification du découpage SQL de `005_access_accounts.sql` : **5 instructions reconnues**.
- Vérification du hash du mot de passe demandé avec `password_verify` : **réussie**.
- Le CMS applique désormais automatiquement les migrations en attente au chargement (`CMS_AUTO_MIGRATE=1` par défaut).
- Sur une base MySQL inexistante ou vide, l’installation de base peut être réalisée automatiquement (`DB_AUTO_INSTALL=1` par défaut), sous réserve des droits MySQL du compte configuré.
- Les redirections nettoient le buffer de sortie avant l’envoi de l’en-tête `Location`, ce qui supprime l’erreur `Cannot modify header information - headers already sent` observée dans l’administration.
- Les exports CSV et les téléchargements de sauvegardes nettoient également le buffer afin de ne pas corrompre les fichiers téléchargés.

## Accès

Deux identifiants sont provisionnés par la migration `005_access_accounts.sql` :

- `Support` avec le rôle `super_admin` ;
- `Client1test` avec le rôle `user`.

Le mot de passe communiqué pour cette livraison est enregistré uniquement sous forme de hash dans les scripts SQL. Les anciens comptes de démonstration connus sont suspendus lors de la migration afin d’éviter de conserver des accès de test actifs, sans supprimer les données liées.

## Limite de validation

L’environnement de validation ne fournit pas de serveur MySQL/MariaDB. La syntaxe PHP/JavaScript et la structure des migrations ont donc été vérifiées statiquement, mais une recette fonctionnelle lecture/écriture MySQL doit encore être exécutée sur WampServer après remplacement du dossier du site. Le premier chargement est conçu pour appliquer automatiquement les migrations, sans action dans l’écran **Mettre à niveau**.
