Diije

Ajouter un test anti-spam à l’inscription

Les blogs collaboratifs et autres plateformes de blogs attirent bien souvent les spammeurs, qui utilisent des scripts automatisés pour s’y inscrire, puis publier du contenu de très faible qualité. Pourtant, ces robots ne sont pas très malins, et il est assez facile de les piéger, et de les empêcher de s’inscrire sur votre site.

Je vous propose donc de rajouter un champ au formulaire d’inscription : une question toute simple ne posant aucun problème à un humain normalement constitué, mais compliquant très sérieusement la tâche des robots.

Comme souvent, quelques lignes de codes ajouté au fichier functions.php de votre thème suffiront. Commençons par ajouter un champ au formulaire :

if ( ! function_exists('dfr_register_field') ) :
  function dfr_register_field() {
	$html = '<p> 
		<label>Combien font 2 + 2 ?<br /> 
		<input type="text" name="test_spambots" id="test_spambots" class="input" value="" size="25" tabindex="26" /></label> 
	</p>';
	echo $html;
  }
  add_action('register_form', 'dfr_register_field');
endif;

Grâce à ces quelques lignes, une question d’une complexité relative et le champ permettant d’y répondre apparaîtront sur votre formulaire d’inscription. Reste maintenant à tester le contenu de ce champ pour vérifier que le futur membre a répondu correctement à la question :

if ( ! function_exists('dfr_register_post') ) :
  function dfr_register_post() {
	if ($_POST["test_spambots"] != 4) {
		wp_die( __('Erreur de captcha, merci de réessayer') );
	}
  }
  add_action('register_post', 'dfr_register_post');
endif;

Si le contenu du champ est différent de la réponse attendue, on renvoie le visiteur vers une page d’erreur. Sinon, il pourra poursuivre son inscription sans problème.
Évidemment, il est possible d’améliorer ce code, par exemple en alternant les questions 🙂