Éditeur de contenu

Formulaires et commentaires

Constructeur de formulaires

QuietCMS intègre un constructeur de formulaires visuel accessible depuis Admin → Formulaires. Il permet de créer des formulaires de contact, d'inscription ou de commande sans écrire une ligne de code, via une interface de glisser-déposer des champs.

Types de champs disponibles

  • text — champ texte simple
  • email — champ email avec validation de format
  • textarea — zone de texte multiligne
  • select — liste déroulante
  • radio — boutons radio (choix unique)
  • checkbox — cases à cocher (choix multiples)
  • hidden — champ masqué pour données techniques

Chaque champ peut être marqué comme obligatoire. La validation est effectuée côté serveur — ne jamais faire confiance uniquement à la validation JavaScript côté client.

Sécurité des formulaires

Tous les formulaires publics sont protégés contre les attaques CSRF par un token de session. Un token unique est généré à l'affichage du formulaire et vérifié à la soumission :

// Génération (côté template)
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));

// Vérification (côté traitement)
if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) {
    http_response_code(403);
    exit('Token CSRF invalide.');
}

Notifications par email et stockage des soumissions

À chaque soumission, le CMS peut :

  • Envoyer un email de notification à un ou plusieurs destinataires (configurables par formulaire)
  • Sauvegarder la soumission dans content/submissions/<form-slug>/<timestamp>.json pour consultation dans le back-office

Le sujet de l'email, le template et l'expéditeur sont paramétrables. La redirection après soumission pointe vers une URL validée côté serveur pour prévenir les redirections ouvertes.

Système de commentaires

QuietCMS propose un système de commentaires natif pour les articles de blog. Les visiteurs doivent créer un compte lecteur (email + mot de passe) avant de commenter. Les mots de passe sont hachés avec password_hash($password, PASSWORD_BCRYPT, ['cost' => 11]).

Flux de modération

  1. Le lecteur soumet un commentaire
  2. Le commentaire passe en file d'attente de modération (status: pending)
  3. L'administrateur approuve ou rejette depuis Admin → Commentaires
  4. Le commentaire approuvé (status: approved) apparaît publiquement

Un mode auto-approbation est disponible pour les sites avec un public de confiance. Les commentaires marqués comme spam (status: spam) sont masqués sans suppression définitive.

Politique sur les liens

L'administrateur peut choisir de :

  • Autoriser les liens dans les commentaires (avec attribut rel="nofollow ugc" automatique)
  • Interdire les liens (les URLs sont converties en texte brut)

Sécurité des comptes lecteurs

QuietCMS prévient la fixation de session en régénérant l'identifiant de session à chaque connexion :

session_start();
// Vérification des identifiants
if (password_verify($password, $storedHash)) {
    session_regenerate_id(true); // Prévient la fixation de session
    $_SESSION['reader_id'] = $reader['id'];
}

La classe CommentManager centralise toutes les opérations sur les commentaires (ajout, lecture, approbation, suppression). Formulaires et commentaires partagent le même mécanisme de token CSRF basé sur la session PHP.

Articles similaires