Comme vous l'avez peut-être lu un peu partout, le SPAM de commentaires sur les blogs devient de plus en plus monnaie courrante [1], y compris sur Dotclear qui était jusque là relativement épargné.

Un plugin a été développé pour tenter d'enrayer ce phénomène : Spamplemousse. S'il est très efficace, il semble parfois faire un peu trop de zèle.

Il est également possible d'utiliser le principe des CAPTCHA afin de s'assurer que le commentateur est bien un être humain et non un bot à la solde du grand capital. Un plugin existe même déjà. Je n'ai pas personnellement essayé ce plugin, mais je n'aime pas trop l'idée d'avoir à saisir des choses inutiles pour valider quelque chose...

Pour ma part, j'ai découvert que le fait d'avoir mis en place la nécessité de prévisualisation des commentaires avant validation [2] enrayait le problème sur ce blog... alors que j'avais mis en place ce système pour m'assurer que les commentateurs vérifiaient bien la bonne mise en forme de leur commentaires au format WIKI avant validation [3].

Pour ceux que ça interesse, voici les opérations à effectuer pour mettre en place ce dispositif [4] :

Dans le fichier template.php de votre thème courant, remplacez le contenu existant entre les lignes :

<?php elseif ($preview) : /* Si on demande la previsualisation d'un commentaire */?>

et :

<?php elseif ($mode != 'post') : /* Si aucune erreur et mode != post on affiche une liste de billets */?>

par :

<div id="preview">
	<h3>Commentaire pour <?php dcPostTitle(); ?></h3>
	<?php if (dc_wiki_comments) : ?>
		<p>Merci de prendre le temps de v&eacute;rifier la bonne mise en forme de
		votre commentaire&nbsp;:</p>
	<?php endif; ?>
	<div id="comment-preview">
		<blockquote><?php dcCommentPreview(); ?></blockquote>
	</div>
	<h3>Changer le commentaire</h3>
	<?php include dirname(__FILE__).'/form.php'; ?>
</div>

Dans le fichier form.php de votre thème courant, après la ligne <p><input type="submit" class="preview" name="preview" value="Pr&eacute;visualiser" /> :

<?php if (array_key_exists('preview', $_POST)) : ?>
	<input type="submit" class="submit" value="Envoyer" />
<?php endif; ?>

Il ne vous restera plus qu'à styliser l'affichage du bloc de prévisualisation au moyen de CSS ;-)

Edit du 25/12 : Apparemment, les spams ne sont pas arrêtés par ce stratagème. Je réfléchis à une autre solution.

Notes

[1] Voir billet précédent

[2] Oui, je sais bien que ça en ennerve certains d'entre vous :-/

[3] Echec total sur ce point là :dent:

[4] N'oubliez pas de faire une sauvegarde au préalable ;)