Plugin Anti-Spam

Bonjour,

J'ai l'habitude de ne pas mettre de capcha anti-spam sur mes sites donc je lui préfère la vérification des messages par un serveur.

Askimet est je pense le meilleur pour détecter les spam.

Voici donc le plugin qui permet de vérifier et détecter les spam.

Edit : C'est un premier jet donc je pense l'améliorer au fur et à mesure.

Pour l'installation:

0) Posséder une classe Askimet sur http://akismet.com

1) Récupérer la classe sur le site suivant et décompresser dans votre répertoire "core/lib"
http://www.achingbrain.net/stuff/akismet/

2) Éditer le fichier index.php et ajouter avant la ligne suivante:
include_once(PLX_CORE.'lib/class.plx.motor.php');
le ligne suivante :
include_once(PLX_CORE.'lib/Akismet.class.php');
3) Editer le fichier core/lib/class.plx.motor.php dans la méthode newCommentaire

Après
$i = 0;
do { # On boucle en testant l'existence du fichier (cas de plusieurs commentaires/sec pour un article)
	$i++;
Ajouter
$akismet = new Akismet('http://www.placementarisque.com/', 'dfaa895b49db');
					$akismet->setCommentAuthor($author);
					$akismet->setCommentAuthorEmail($mail);
					$akismet->setCommentAuthorURL($site);
					$akismet->setCommentContent($contenu);
					// $url = './?article'.intval($this->plxRecord_arts->f('numero')).'/'.$this->plxRecord_arts->f('url');
					$akismet->setPermalink('http://www.placementarisque.com/');
					$isSpam = 0;
					if($akismet->isCommentSpam()) {
						// store the comment but mark it as spam (in case of a mis-diagnosis)
						$filename = PLX_ROOT.$this->aConf['racine_commentaires'].'_spam_'.$artId.'.'.$date.'-'.$i.'.xml';
						$isSpam = 1;
					} else {
						if($this->aConf['mod_com']) # On modere le commentaire => underscore
							$filename = PLX_ROOT.$this->aConf['racine_commentaires'].'_'.$artId.'.'.$date.'-'.$i.'.xml';
						else # On publie le commentaire directement
							$filename = PLX_ROOT.$this->aConf['racine_commentaires'].$artId.'.'.$date.'-'.$i.'.xml';
					}
				} while(file_exists($filename));
				# On peut creer le commentaire
				if($this->addCommentaire($filename,$author,$ip,$mail,$site,$contenu)) { # Commentaire OK
					if ($isSpam == 1)
						return 'spam';
					else if($this->aConf['mod_com']) # En cours de moderation
						return 'mod';
					else # Commentaire publie directement, on retourne son identifiant
						return 'c'.$date.'-'.$i;
				} else { # Erreur lors de la création du commentaire
					return 'Une erreur s\'est produite lors de la publication de ce commentaire';
				}
URL_DE_VOTRE_SITE : Etant l'adresse de votre site Edit : Pas réussi à trouver le code pour récupérer l'adresse du site
URL_DE_VOTRE_ARTICLE : Etant l'adresse de votre article Edit : Pas réussi à trouver le code pour récupérer l'adresse de l'article
ASKIMET_KEY : Clé Askimet précédemment récupérée

4) Dans la même classe, modifier la méthode demarrage

Après
} elseif($retour == 'mod') { # Le commentaire est en modération
					$msg = 'Le commentaire est en cours de modération par l\'administrateur de ce site';
					header('Location: '.$url.'/&msgcom='.urlencode($msg).'#form');
				}
Ajouter
elseif($retour == 'spam') { # Le commentaire est en spam
					$msg = 'Le commentaire a été détecté en spam';
					header('Location: '.$url.'/&msgcom='.urlencode($msg).'#form');
				}
Voilà testé et validé.
Par contre, il reste encore a modification de l'admin pour visualiser les commentaires spam, les supprimer ou les valider, etc ...
Connectez-vous ou Inscrivez-vous pour répondre.