29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don

Luxpopuli / eZ Publish / Extensions / Random Anti-Spam Image - Image anti-spam aléatoire





Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

Random Anti-Spam Image - Image anti-spam aléatoire

Date de publication: le samedi 22 décembre 2007 à 03h07
Dernière modification: par Pascal BOYER le samedi 4 septembre 2010 à 02h36
« Article précédent: eZ Publish : eZ Multiupload - multitéléchargement d'objets
» Article suivant: ezstats : popularité des articles

Objectifs de l'extension

Cette extension propose d'afficher au bas de votre formulaire de rédaction de commentaire une suite de 7 caractères (composée de lettres et/ou de chiffres) que le visiteur devra reproduire dans un champ spécifique avant de pouvoir envoyer son commentaire. Ceci afin d'éviter que des robots (logiciels) utilisent abusivement (et de façon autonome) votre formulaire et envahissent votre site de messages-spam.

Le contenu de cet article est en grande partie tiré des informations disponibles en ligne sur la page de présentation de l'extension: Peter's Random Anti-Spam Image  mais se base également sur mon expérience de la mise en oeuvre de cette extension sur une version 3.9.4 de eZ Publish 

 :
Cette extension propose également l'écoute audio de la lecture de la suite de caractères générée automatiquement. Ceci est très pratique pour les personnes malvoyantes.
Par ailleurs il semble que l'auteur de l'extension ait pensé aux utilisateurs de Mac OS X puisque l'archive contient un répertoire __MACOSX (je n'ai pas inspecté le contenu de ce répertoire)

Télécharger l'extension

Télécharger l'archive de l'extension sur cette page: Peter's Random Anti-Spam Image  

wget http://ez.no/content/download/179550/1223108/file/customantispam_ez1.1.zip

Installer l'extension

Extraire le contenu de l'archive dans le répertoire extension/ situé à la racine du répertoire d'installation de eZ Publish:

unzip customantispam_ez1.1.zip -d /usr/local/www/extension/

Un nouveau répertoire est créé:

extension/customantispam/

Pensez éventuellement à modifier les propriétaires des fichiers et répertoire de l'extension:

chown -R www-data:www-data extension/customantispam/

Activer l'extension

Pour activer cette extension pour l'ensemble des siteaccess, ajoutez cette ligne au fichier settings/override/ site.ini.append.php:

[ExtensionSettings]
ActiveExtensions[]=customantispam

Pour n'activer l'extension que pour un siteaccess particulier, c'est le fichier settings/siteaccess/< siteaccess_public>/ site.ini.append.php dans lequel il faut ajouter cette fois-ci:

[ExtensionSettings]
 ActiveAccessExtensions[]=customantispam

Dans les deux cas videz les caches pour que l'extension soit prise en compte par le système.

Créer les nouvelles tables dans la base de données

A la racine du répertoire de l'extension se trouve le fichier customantispamtables.sql qui va servir à créer les deux nouvelles tables suivantes:

customantispam
customanticount

Voici la commande permettant d'appliquer les requêtes contenues dans ce fichier:

mysql -u xxx -p -D maBaseDeDonnees < extension/customantispam/customantispamtables.sql

Enter password: <mot de passe de l'admin de la base de données>

...où xxx est le nom de l'administrateur de la base de données de eZ Publish.

Ajouter une politique de sécurité

Il est nécessaire d'ajouter une politique de droits au rôle Anonymous qui par défaut contient le groupe d'utilisateurs Anonymous Users contenant à son tour l'utilisateur Anonymous User.

Donc, cliquez sur l'onglet Comptes utilisateurs de l'interface d'administration puis sur le lien Rôles et droits dans le menu de gauche:

 

 

Fig. 1: Ajouter une politique de droits au rôle Anonymous 

Cliquez ensuite sur l'icône d'édition (icône représentant un crayon) correspondant au rôle Anonymous:

 

 

Fig. 2: Interface d'édition des politiques de sécurité du rôle Anonymous 

Cliquez sur le bouton Nouvelle politique de sécurité puis sélectionnez l'option Customantispam dans la liste déroulante du champ Module:

 

 

Fig. 3: Sélection du module Customantispam et application des droits sans limite

Le module Customantispam sélectionné, appliquez l'option Accorder l'accès à toutes les fonctions:

 

 

Fig. 4: La nouvelle politiques de sécurité du rôle Anonymous apparaît au bas de la liste de toutes les politiques du rôle

Validez la nouvelle politique en cliquant sur le bouton OK.

Créer le workflow antispam

Cliquez sur l'onglet Administration de l'interface d'administration puis sur le lien Workflows dans le menu de gauche:

 

 

Fig. 5: Liste des groupes de wokflows présents par défaut dans le système

Puis cliquez sur le bouton Nouveau groupe de workflow et donnez n'importe quel nom à votre nouveau groupe:

 

 

Fig. 6: Nom du nouveau groupe de wokflows

Validez le nom avec le bouton OK puis cliquez sur le nom de votre groupe afin d'afficher ce cadre:

 

 

Fig. 7: Créer un wokflow dans le nouveau nouveau groupe de workflows

Poursuivez en cliquant sur Nouveau processus de workflow:

 

 

Fig. 8: Nommer le wokflow et sélectionner l'événement

...puis nommez comme bon vous semble le workflow, sélectionnez l'événement Custom anti-spam et cliquez sur Ajouter un événement:

 

 

Fig. 9: Ajout de l'événement Custom anti-spam au nouveau workflow

Terminez en validant avec le bouton OK: 

 

 

Fig. 10: Fin de création du workflow

Créer le déclencheur

La dernière étape consiste à créer le déclencheur (trigger) du nouveau workflow.

Dans l'onglet Administration cliquez dans le menu de gauche sur le lien Déclencheurs:

 

 

Fig. 11: Associer le workflow au déclencheur Content/publish/before 

Terminez en cliquant sur Appliquer les changements.

Le template d'édition comment.tpl 

Au tout début du template d'édition des commentaires, par défaut il s'agit du template design/base/override/templates/edit/ comment.tpl, il faut ajouter cette ligne:

{set-block scope=root variable=cache_ttl}0{/set-block}

Celle-ci indique au système de ne jamais mettre en cache le contenu de la compilation de ce template.

Pour plus d'informations sur le système de mise en cache, consultez la documentation: Système de cache des vues  

Toujours dans le même template, et avant la balise de fermeture </form>, insérez le bloc de lignes 47 à 55:

39 <div class="blockMessage">
40 {let attribute=$object.data_map.message}
41 <label>{$attribute.contentclass_attribute.name}</label><div class="labelbreak"></div>
42 <input type="hidden" name="ContentObjectAttribute_id[]" value="{$attribute.id}" />
43 <textarea class="box" cols="70" rows="10" name="ContentObjectAttribute_data_text_{$attribute.id}"></textarea>
44 {/let}
45 </div>
46 {* MISE EN PLACE DU SYSTEME ANTI-SPAM *}
47 <div class="block">
48 {def $antispam = custom_anti_spam()}
49 <label>Anti-spam word</label>
50 <div class="labelbreak"></div>
51 <input type="hidden" name="matchthis" value="{$antispam}" />
52 <a href={concat("/customantispam/audio/(audio)/",$antispam)|ezurl("double")}>
&nbsp;<img src={concat("/customantispam/image/(image)/",$antispam)|ezurl("double")} 
&nbsp;style="border: 1px solid black" alt="Cliquez pour &eacute;couter la version audio du mot anti-spam"/></a>
53 <div class="labelbreak"></div>
54 <input type="text" name="securitycode" size="10" />
55 </div>
56
57 <div class="buttonblock">
58 <input class="defaultbutton" type="submit" name="PublishButton" value="Envoyer" />
59 <input class="button" type="submit" name="DiscardButton" value="Annuler" />
60 <input type="hidden" name="MainNodeID" value="{$main_node_id }" />
61 <input type="hidden" name="DiscardConfirm" value="0" />
62 </div>
63 </div>{* logoCommentaire *}
64 </div>{* class-article-comment *}
65 </div>{* edit *}
66 </form>

Videz les caches et testez votre extension en rédigeant un commentaire au bas de l'une de vos pages de votre site public.

Résultat

Si tout est correctement configuré, voici ce que vous devez voir lors de l'édition du formulaire de rédaction d'un commentaire:

 

 

Si vous ne remplissez pas correctement les champs du formulaire, le système de contrôle liée au formulaire étant prioritaire il affichera ses messages d'erreurs et ceci, quand bien même il y aurait une erreur dans le champ anti-spam.

Par contre, si tous les champs du formulaire sont bien remplis et que ne subsiste qu'une erreur au niveau du champ Anti-spam, alors toute tentative d'envoi du commentaire produira ce message d'erreur:

 

 

:
En cliquant sur le mot généré aléatoirement le système vous propose d'écouter la lecture du mot.
Les fichiers audio sont présents dans le répertoire extension/customantispam/sounds/ 
Chaque lettre et chiffre faisant l'objet d'un fichier audio au format MP3, il est très facile avec audacity de franciser la lecture du mot.

Longueur du mot généré

La longueur du mot généré est définie par la variable $random_word ligne 53 du fichier:

extension/customantispam/customantispam.php

Il vous suffit donc de modifier la valeur par défaut (7) comme ceci:

53 &nbsp; &nbsp;$random_word = $this->random_text(12);

...pour augmenter (ou diminuer) le nombre de caractères composant le mot.

Francisation

Le message d'erreur ci-dessus est contenu dans le template suivant:

extension/customantispam/design/standard/templates/workflow/eventtype/result/event_customantispam.tpl

Le nom du champ Anti-spam word peut être modifié directement à partir de la ligne 49 donnée en exemple plus haut.

Coupler le workflow Custom anti-spam avec un autre workflow

Il est possible que vous souhaitiez, par exemple, coupler le fonctionnement de cette extension avec un workflow permettant de modérer les sommentaires à priori. Auquel cas, je vous renvoie à cet article qui détaille la procédure à suivre.

Commentaires

  • Problème

    Bonjour et merci pour ce tuto !

    J'essaie de faire ce tuto, mais je rencontre un problème au niveau de la figure 8.
    J'ai fait tout ce qui précédait mais je ne trouve pas l'évènement "Evenement/Custom Anti Spam". A la place, j'ai cette erreur : Strict standards: Declaration of CustomAntiSpamType::execute() should be compatible with that of eZWorkflowType::execute() in C:\wamp\www\eZ2\extension\customantispam\eventtypes\event\customantispam\customantispamtype.php on line 67

    petites précisions : je suis sous windows et j'utilise eZ Publish v4.5.

    Quelqu'un sait-il d'où cela vient et peut-il m'aider à le résoudre ?
    Merci, très bon site btw
    Marc