Spam de commentaires
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> <? }; ?> |
