Audit complet du site à la date du 4 juillet 2026 — C:\SITE-COPIE
| Fichiers HTML | 31 |
| Fichiers PHP | 1 |
| Lignes CSS | ~1025 |
| Lignes JS (externe) | ~55 |
| Lignes JS (inline dupliqué) | ~1000 |
| Scripts shell | 2 |
| Templates | 2 |
$headers = "From: $email\r\nReply-To: $email"; — L'email utilisateur est inséré directement dans l'en-tête From: sans validation suffisante. Un attaquant peut injecter des en-têtes supplémentaires via \r\n pour du spam relayé. Utiliser filter_var($email, FILTER_VALIDATE_EMAIL) et FILTER_SANITIZE_EMAIL avant toute utilisation dans les en-têtes.
Le menu déroulant "Personnalités" de contact.php contient seulement 12 liens. Manquent : idriss-aberkane.html, caroline-galacteros.html, dieudonne.html, xavier-poussard.html. Toutes les autres pages en ont 16.
updateDate() (~9 lignes) est dupliqué textuellement dans les 31 fichiers. sourceNames (~30 lignes) est dupliqué dans ~14 fichiers. Soit près de 700 lignes de code dupliqué. À externaliser dans des fichiers .js communs.
Les chaînes de mois dans le script updateDate() utilisent "février", "août", "décembre" au lieu des caractères littéraux "février", "août", "décembre". Les entités HTML ne sont pas interprétées dans les chaînes JavaScript.
Le footer est simplifié (© 2026 Re-info.fr) sans la section .footer-sources présente dans toutes les autres pages. Incohérence majeure de design.
.news-card.src-tocsin est défini deux fois avec des couleurs différentes (orange puis rouge). .news-card.src-gptv aussi (jaune puis vert). La deuxième définition écrase la première. Supprimer les doublons.
<title>Médias Alternatifs - Site d'Information</title> — ne contient pas "Re-info.fr" contrairement à toutes les autres pages du site.
Absence de <meta name="description" content="..."> sur l'ensemble du site. Impact SEO critique.
Pas de og:title, og:description, og:image, ni de twitter:card. Le site ne peut pas être correctement partagé sur les réseaux sociaux.
Aucun token CSRF n'est utilisé. Le formulaire est vulnérable aux attaques CSRF.
Seulement 2 media queries minimales. Pas de menu hamburger. La navigation devient illisible sur écran étroit.
Chaque page a son propre script inline qui colore les .news-tag avec des couleurs aléatoires, alors que case-colors.js est censé gérer la colorisation. Code fragmenté et dupliqué.
La ressource Google Fonts utilise &display=swap mais pourrait être optimisée et préchargée. Le texte peut être invisible pendant le chargement.
Les listes de cartes utilisent <ol> (ordonnées) mais ne sont pas numérotées. Devrait être <ul> pour la sémantique HTML.
Tous les <img class="favicon"> ont alt="". Correct pour des images purement décoratives, mais un texte court décrivant la source améliorerait l'accessibilité.
Le <nav> principal n'a pas de aria-label pour le différencier d'autres éléments de navigation potentiels.
Aucun fichier sitemap.xml ni robots.txt n'est présent dans le répertoire racine, ce qui limite le référencement.
Toutes les 16 cartes personnalités utilisent class="news-card src-tvl", même celles qui ne sont pas associées à TV Libertés. Les couleurs et favicons ne reflètent pas la source réelle de chaque personnalité.
font-family: 'Playfair Display', 'Roboto', ... apparaît dans environ 30 sélecteurs. L'héritage CSS suffirait pour la plupart.
La couleur noire est définie en dur répétitivement au lieu d'utiliser une variable CSS --text.
La bordure noire est répétée dans de nombreux sélecteurs. À factoriser avec une variable CSS.
Plusieurs sélecteurs ne sont jamais utilisés dans le HTML : .logo-white, .hero-illustration, .page-banner, .home-icon, @keyframes floatStar, .hero-date.
Seuls les favicons utilisent loading="lazy". Aucun autre contenu n'est en chargement différé.
Les URLs des ressources (style.css, case-colors.js, bg-pattern.js) n'ont pas de paramètre de version.
Lignes vides excessives dans le code source de plusieurs pages (ex: lignes 44-45 dans a-propos.html, personnalites.html, dossiers-speciaux.html).
Le fichier RAPPORT.md est dans le répertoire public mais n'est lié nulle part sur le site.
Créer un fichier scripts/date.js commun pour éviter la duplication dans les 31 fichiers.
Créer un fichier scripts/sources.js pour factoriser le script d'ajout des sources.
Mettre à jour le dropdown de contact.php pour qu'il contienne les 16 personnalités comme toutes les autres pages.
Créer ces fichiers pour améliorer le référencement.
Le honeypot existant est un bon début, mais un CAPTCHA ou une limite de taux renforcerait la sécurité.
Les variables --text, --bg, --border existent mais sont rarement utilisées. La plupart des couleurs sont en dur.
Seulement 2 breakpoints, aucun pour les tablettes. La mise en page peut être désastreuse sur iPad.
La barre de navigation est illisible sur les petits écrans. Un menu hamburger est indispensable.
Remplacer l'attribut class="active" par aria-current="page" pour une meilleure accessibilité.
Améliorer l'accessibilité pour les lecteurs d'écran.
Permettre un partage correct sur les réseaux sociaux avec image, titre et description.
Utiliser un outil de vérification de liens pour confirmer que tous les liens YouTube, Acast, Dailymotion, etc. sont valides.
Ajouter la section .footer-sources à contact.php pour la cohérence visuelle.
Une page d'erreur 404 sur le thème du site améliore l'expérience utilisateur.
Les pages contact.php et medias-alternatifs.html n'ont pas le même jeu de scripts que les templates. Uniformiser les inclusions de scripts (updateDate, sourceNames, case-colors, bg-pattern).
| Fichier | Problèmes | Détail |
|---|---|---|
| contact.php | 5 | Header injection, dropdown incomplet (12/16), footer manquant, pas de CSRF, pas de CAPTCHA |
| css/style.css | 6 | Doublons src-tocsin/src-gptv, code inutilisé, font-family répété, couleurs en dur, pas de responsive |
| Tous les HTML | 4 | Pas de meta description, pas d'OG, pas de robots.txt/sitemap, pas d'aria-label |
| 31 fichiers | 3 | updateDate() dupliqué, entités HTML dans JS |
| 14 fichiers | 1 | sourceNames dupliqué |
| personnalites.html | 2 | Script couleurs dupliqué, <ol> au lieu de <ul> |
| medias-alternatifs.html | 2 | Titre incohérent, script couleurs dupliqué |
| dossiers-speciaux.html | 2 | Script couleurs dupliqué, <ol> au lieu de <ul> |