Maxy.fr

Installer et utiliser l'antispam Akismet sous Symfony2

Akismet est l'un des antispam les plus utilisé notamment pour le système de commentaires des blogs Wordpress. Il permet une détection assez poussée des spams en analysant le contenu des messages ainsi que des adresses mail et noms d'utilisateurs s'il y a lieu.

Il existe sous symfony un bunble permettant son utilisation. Je vais donc vous expliquer comment l'installer à l'aide de composer (si vous ne savez pas comment utiliser composer, je vous propose ce tuto).

Le bundle que nous allons installer est celui-ci.

Installation et configuration :

Configuration du fichier composer.json :

Il va falloir dans un premier temps éditer le fichier composer.json pour lui indiquer ce que l'on veux installer. Je vous invite donc à ajouter les lignes suivantes :

"require": {
        //...
        "ornicar/akismet-bundle": "dev-master",
        "kriswallsmith/buzz" : "*",
    },

Téléchargement et installation des fichiers :

Nous allons maintenant exécuter composer pour qu'il installe les nouveaux bundles. Depuis le terminal placez vous à la racine de votre site Symfony et exécutez donc la commande suivante :

php composer.phar update

Notez que votre fichier composer.phar n'est peut-être pas placé à la racine de votre site, si tel est le cas adaptez donc le chemin du fichier.

La commande s'occupera donc de télécharger, d'installer les fichiers et de mettre à jour automatique le fichier autoload de Symfony. En soit vous devriez avoir deux nouveaux dossiers dans le répertoire Vendor qui sont : "ornicar" et "kriswallsmith".

Enregistrement du bundle dans le Kernel :

Maintenant il nous faut enregistrer notre nouveau bundle dans le Kernel du système. Éditez donc le fichier /app/AppKernel.php et ajoutez cette ligne :

$bundles = array(
            //...
            new Ornicar\AkismetBundle\OrnicarAkismetBundle(),
        );

Configuration du bundle Akismet :

Une dernière chose avant de pouvoir l'utiliser il faut configurer le bundle. Ajouter donc ces lignes à votre fichier app/config/congig.yml :

ornicar_akismet:
    api_key:        xxxxxxxxxxxxx
    url:            http://votresite.com

Vous remarquez qu'il vous faut indiquer une clé d'api et l'url de votre site. Pour obtenir votre clé il vous suffis de vous inscrire sur le site d'Akismet en choisissant l'offre "Personal" gratuite.

Voilà l'installation et la configuration est maintenant terminée.

Utilisation :

L'utilisation d'Akismet est maintenant très simple. Placez vous dans un premier temps dans la fonction de votre controlleur à l'endroit ou vous récupérez les données que vous souhaitez vérifier.

Voici le code vous permettant de vérifier si les données réçu sont du spam ou non :

$akismet = $this->container->get('ornicar_akismet');

$isSpam = $akismet->isSpam(array(
     'comment_author'  => 'Auteur du message',
     'comment_content' => 'Contenu du message'
));

Vous renseignez donc les informations auteur et message à vérifier. Sachez qu'il est possible d'envoyer plus d'informations suivant les champs de votre formulaire. Par exemple une adresse email avec "comment_author_email", l'adresse d'un site avec "comment_author_url"... (La liste des options est disponible ici).

Sachez aussi qu'il n'y a pas besoin de fournir l'ip, ou user_agent de l'auteur du message, le bundle s'en charge tout seul.

 

Catégories : Symfony2

Par Guillaume le 10/02/2014 à 02:41

Partager l'article :

Articles similaires

Utiliser GROUP BY day, month, year sous doctrine2

En temps normal il est simple de grouper des données séléctionnées via une requête MySQL par jour, mois, année ou par heure par exemple (du moins lorsque vous enregistrez bien vos date en "datetime"). Il suffit en effet d'utiliser "GROUP BY day(date)" et...

Symfony2 : Exécuter un script php au chargement des pages

Il est souvent utile suivant les besoins d'executer un script PHP lors du chargement de n'importe quelle page d'un site. Par exemple pour l'enregistrement de statistiques. Il s'avère que ceci est plutôt simple à réaliser en créant et en configurant un...