Le 16/08/2016

Supprimer les spams avec Akismet sur Symfony3

Le soir quand je rentre chez moi, de temps en temps, j'écris sur wordpress pour partager le peu de connaissances que j'ai sur le développement web et aujourd'hui j'ai décidé de vous partager ma découverte du jour avec Symfony3.

Akismet l'outil ultime contre le SPAM

Akismet c'est THE webservice qui vous permettra de mettre fin aux spams dans les commentaires de votre blog et dans vos emails. A la base ça a été développé pour wordpress ( fini les robots qui vous proposent des pilules bleues...oui si vous êtes client ca va pas vous arranger cet article ;) mais pour les autres ça peu être une source d'énervement tous ces spam alors on va mettre en place ce magnifique webservice qu'est Akismet sur notre site. J'ai un module de commentaire qui s'appelle CommentBundle c'est original et qui dans son contrôleur enregistre un commentaire âpres la soumission d'un formulaire. Je veux donc ajouter une vérification via Akismet avant de publier le commentaire. Je n'enregistrerai pas le commentaire si c'est du spam.

Intégrer une classe PHP externe dans mon module

En faisant quelques recherches, il existe une classe qui fait parfaitement le travail, vous la trouverez ici php5-akismet. Il faut que je l'ajoute à mon Bundle, voici comment faire : Je créer un dossier dans mon bundle qui s'ape lle Helper (vous pouvez mettre le nom que vous voulez...osef à vous de mettre le bon namespace derrière dans le "use". Je copie mon fichier Akismet.php dedans et je lui ajoute le namespace au début du fichier :

  namespace CommentBundle\Helper;
  //...reste du fichier

Comment utiliser ma classe

Je vous laisser découvrir le code de la classe qui est trés bien commenté et plutôt assez explicite et je vous met ici un exemple de validation de mon commentaire avec Akismet :

     $WordPressAPIKey = 'xxxxxxxxxx';
     $MyBlogURL = 'http://www.monsite.com/';
     $akismet = new Akismet($MyBlogURL ,$WordPressAPIKey);
     $akismet->setCommentAuthorEmail($user->getEmail());
     $akismet->setCommentContent($comment->getContent());

     if(!$akismet->isCommentSpam()){
                   // on enregistre notre commentaire
     }

A très bientôt, Pierre. Petit rappel : Je suis nouveau sur Symfony donc c'est peu être pas la meilleure façon de le faire, si vous avez des suggestions de bonnes pratiques je suis preneur. Merci à ceux qui le feront et me feront évoluer dans le monde de Symfony3 :)
Commentaires sur cet article
Pas encore de commentaires pour cet article. Soyez le premier !

Vous devez être connecté pour commenter un article.