Depuis que je me suis attaqué au problème du spam sur mes rétroliens, je n'ai plus aucun spam de rétrolien qui arrive à passer sur ce journal. Mais des spams de commentaire commençaient à être pénibles. J'ai donc ajouté deux petites modifications violentes, sans trop réfléchir :

  • la première avait été trouvée sur ce billet et l'idée est assez simple. J'ai légèrement divergé, en modifiant le contenu du commentaire HTML et en ne modifiant pas le code de DotClear (voir ci-dessous).
  • la seconde modifiction est un captcha tout bête. Je n'ai même pas cherché à regarder s'il y avait un greffon qui implémentait cette fonctionnalité (ce qui est le cas).

À noter qu'on peut créer un fichier postcon.php dans le thème utilisé pour exécuter du code avant que le commentaire soit accepté par DotClear (ou traité par spamplemousse). La mini-astuce consiste à donner une valeur à la variable $_POST['preview'] lorsque le commentaire ne passe pas les épreuves (le captcha et le commentaire HTML). Cela permet de bloquer le commentaire temporairement (comme s'il s'agissait d'une prévisualisation) et évite d'avoir à modifier le code de DotClear. Concrètement, mon postcon.php contient :

if ($mode == 'post' && $post_id) {
	$news = $blog->getPostByID($post_id);
	if (!$news->isEmpty() && $news->openComment() && !empty($_POST['redir']) && empty($_POST['preview'])) {
		if ($_POST['c_anti'] != "antipasti") {
			$form_err = __('Please fill the <q>antipasti</q> entry.');
			$_POST['preview'] = "preview";
		}
		if (isset ($_POST['c_contre'])) {
			$form_err = __('The HTML parser of your browser is broken.');
			$_POST['preview'] = "preview";
		}
	}
	unset($news);
}

Et après cinq minutes pour modifier ce qu'il fallait, j'ai pu profiter d'un calme relatif. Je précise relatif car je dois toujours penser à modérer ma file spamplemousse de temps en temps...