Bon voyage

Juste quelques mots pour vous souhaiter un bon voyage dans mes univers parfois un peu étranges.
Si vous avez aimé, n'hésitez pas à me laisser un message. Sachez aussi que je suis le webmestre du site Tache d'Encre qui accueillera gratuitement vos récits imaginaires.

vendredi 28 mars 2008

Un filtre anti-spam simple - Partie 1: Le formulaire

Vous avez un site sur lequel on peut saisir des commentaires, comme sur Tache d'Encre. Malheureusement, votre base est pourrie par les spams balancés par des robots qui parcourent le net. Certains se protègent grâce à ce qu'on appelle le captcha (à vos souhaits!), ces petites images que l'on voit fleurir un peu partout qui déforment des caractères que l'on vous demande de saisir dans un formulaire
J'ai une autre solution pour vous. Simple et efficace, elle ne demande une telle installation (plus ou moins simple selon les systèmes proposés sur le net). Elle requière toutefois un serveur php.
C'est le filtre que j'ai mis en place sur mon site.

Première étape: le formulaire
Tout d'abord: il faut créer un formulaire tout ce qu'il y a de plus normal:
<form enctype="multipart/form-data" method="post">
<label>Nom*</label>
<input type="text" name="Nom" maxlength="35" size="37" value="" />
<label>E-mail</label>
<input type="text" name="Mail" maxlength="35" size="37" value="" />
<input type="submit" value="Envoyer" /> <input type="reset" value="Effacer" />
</form>


Ce qui devrait donner ceci:







Maintenant, ce qu'il faut savoir, c'est que les robots ne sont pas intelligents, ils font ce qu'on leur demande de faire. Dans ce cas-là, ils remplissent un formulaire, mais ils remplissent tous les champs.
C'est là que se trouve l'astuce: on va créer un champ caché qu'on appellera info par exemple:
<form enctype="multipart/form-data" method="post">
<label>Nom*</label>
<input type="text" name="Nom" maxlength="35" size="37" value="" />
<label>E-mail</label>
<input type="text" name="Mail" maxlength="35" size="37" value="" />
<input style="{visibility:hidden}" type="test" name="Info" />
<input type="submit" value="Envoyer" /> <input type="reset" value="Effacer" />
</form>


Ce qui donne:








Vous avez noté le style="{visibility:hidden}"?
Cette chose là cache le formulaire pour les utilisateurs, mais pas pour les robots. Un internaute ne le remplira donc pas, mais les robots oui.
Après quoi, il suffit de tester la page après envoi du formulaire. Si le champ Info est rempli, on le considère comme un spam.
Dans la partie 2, nous verrons comment tester le formulaire en php.

Aucun commentaire: