24th July 2007

Spam de commentaires

posted in Développement |

Halte au spam!Eviter les spams des commentaires de categorizator.

J’ai remarqué qu’il y avait pas mal de spams sur les commentaires de ce script en regardant ma base de données (la table des commentaires) de quelques uns de mes sites reposant sur cet annuaire.Au début j’ai commencé  avec des ‘delete’ de commentaires contenant la chaine http. mais seulement voila, il semblerait que certains spammeurs programment des bots  et vous vous retrouvez vite avec des milliers de commentaires remplis de liens. 
 
Donc voici une solution . J’ai juste repris le très bon travail fait par superpj (audiencestv, merci à lui) sur categorizator pour la proposition de site. donc ça ne marchera que sur cette version.

Voila les modifications à apporter au fichier commentaires.php.

à insérer au début du script
après le <?php

if ( isset($_GET[’image’]) || $_POST[’action’] == “add” ) {
session_start();
};
if ( isset($_GET[’image’]) )
{
// Voici les caractères autorisés pour le code
// (j’ai fait exprès de retirer le chiffre 0 et la lettre O pour parer à toute ambiguïté)
$alphanum = “ABCDEFGHIJKLMNPQRSTUVWXYZ123456789″;
// Trouve au hasard un code de 5 caractères
$rand = substr(str_shuffle($alphanum), 0, 5);
// Création d’un hash pour ce code puis injection dans la session
$_SESSION[’image_random_value’] = md5($rand);
// Sélectionne au hasard l’image de fond : img/bg1.jpg ou img/bg2.jpg
$image = imagecreatefromjpeg(”img/bg”.rand(1,2).”.jpg”);
// Blanc en couleur de fond
$bgColor = imagecolorallocate ($image, 255, 255, 255);
// Noir en couleur de texte
$textColor = imagecolorallocate ($image, 0, 0, 0);
// Ecriture du code dans par-dessus l’image
imagestring ($image, 5, 5, 2, $rand, $textColor);
// Paramètres pour éviter la mise en cache …
header(”Expires: Mon, 26 Jul 1997 05:00:00 GMT”);
header(”Last-Modified: ” . gmdate(”D, d M Y H:i:s”) . ” GMT”);
header(”Cache-Control: no-store, no-cache, must-revalidate”);
header(”Cache-Control: post-check=0, pre-check=0″, false);
header(”Pragma: no-cache”);
// Définition du type “image”
header(’Content-type: image/jpeg’);
// Envoi de l’image au navigateur
imagejpeg($image);
// Destruction de l’image pour libérer la mémoire
imagedestroy($image);
exit;
};

Puis après le ($action == “add”)

Citation:
if ($PMA_infos[’code_verif’]) faux_code($code,”Erreur :Le code de vérification que vous avez entré est incorrect !”,true);

Puis intégrer quelque part dans le formulaire  le capcha (J’ai laissé le tableau par faineantise, a vous de modifier la mise en page)

Citation:
<? if ($PMA_infos[’code_verif’]) {?>
<table>
<tr>
<td colspan=2 >
<table border=0 cellpadding=0 cellspacing=0 width=1>
<tr>
<td align=center valign=bottom  nowrap>
<table border=0 cellpadding=2 cellspacing=0 width=100%>
<tr>
<td align=center valign=bottom  nowrap>
Veuillez recopier le code de vérification ci-contre :  </td>
</tr>
</table> </td>
<td align=center valign=bottom >
<img src=submit_site.php?image border=1 width=60 height=18> </td>
<td align=center valign=bottom class=”text_before_field_add_annuaire”>
 <input type=”text” name=”code” maxlength=5 size=5> </td>
</tr>
</table> </td>
</tr></table>
<? }; ?>

Aricle envoyé le on Tuesday, July 24th, 2007 at 12:14 am dans la catégorie Développement. Suivez les réponses en suivant le lien RSS suivant  RSS 2.0 feed. Vous pouvez laisser une réponse, or trackback de votre site.

Laisser une réponse

Aller »
  • Calendar

  • July 2008
    M T W T F S S
    « May    
     123456
    78910111213
    14151617181920
    21222324252627
    28293031