changeset 24:b23b8f2a8c91

Lutte anti-spam: on vérifie que le commentaire provient du formulaire du blog
author Franck Deroche <webmaster@defr.org>
date Sat, 27 Oct 2007 11:40:07 +0200
parents 20159d39b8f8
children 8cbb4f4d890b
files comment.php templates/commentForm.xml
diffstat 2 files changed, 15 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/comment.php	Fri Oct 26 18:09:36 2007 +0200
+++ b/comment.php	Sat Oct 27 11:40:07 2007 +0200
@@ -12,6 +12,11 @@
      $AdresseMail = $Req->get('AdresseMail');
      $Comment=$Req->get('Comment');
      $DateComment=gmdate("Y-m-d H:i:s", time() + 3600*2);
+
+     // Si on essaie d'ajouter un commentaire et que la graine n'est pas bonne
+     if(!empty($Comment) && $_SESSION['commentSeed'] != $Req->get('seed'))
+     	die("L'ajout de commentaire doit se faire à partir du formulaire de ce blog");
+
      if(!is_null($Auteur) && $Auteur!='Votre Nom' && $Auteur != $Adresse && !empty($Comment)) {
 	// Prévention d'un "cassage" par ajout d'un commentaire incorrectement formaté
 	$ip = $_SERVER['REMOTE_ADDR'];
@@ -66,8 +71,16 @@
         $sk->addBlogPost($commentTpl);
       }
 
-      // Ajout du formulaire d'ajout de commentaires
+      // Génération de la graine (cette dernière permet de s'assurer
+      // que l'essai d'ajout de commentaire provient bien de ce
+      // formulaire, et en conséquence devrait permettre de réduire
+      // le spam.
+      $seed = md5(time() . 'DualBlog');
+      $_SESSION['commentSeed'] = $seed;
+
+      // Ajout du formulaire d'enregistrement de commentaires
       $commentForm = new Template('commentForm.xml');
+      $commentForm->setParams(array('#Seed@value' => $seed));
       $sk->addBlogPost($commentForm);
 
       echo $sk;
--- a/templates/commentForm.xml	Fri Oct 26 18:09:36 2007 +0200
+++ b/templates/commentForm.xml	Sat Oct 27 11:40:07 2007 +0200
@@ -10,6 +10,7 @@
    <div id='FormCommentaire'>
 	Vous souhaitez ajouter un nouveau commentaire ? Faites donc, il vous suffit de remplir
 	le petit formulaire ci-dessous.
+	<input type='hidden' name='seed' tr:id='#Seed' />
 	<input type='text' name='Auteur' value='Votre Nom' onfocus="if(this.value== this.getAttribute('value')) this.value='';" />
 	<input type='text' name='AdresseMail' value='Une adresse mail où vous joindre ? ( Non affichée publiquement )' onfocus="if(this.value == this.getAttribute('value')) this.value='';"/>
 	<input type='text' name='Adresse' value='Un site web à vous ?' onfocus="if(this.value == this.getAttribute('value')) this.value='';"/>