en français / in english
Merci à J. Roumagnac pour cet antispam super efficace pour pixelpost 1.5 et versions antérieures.
Je me permets de reprendre ces quelques lignes pour un upgrade vers pixelpost 1.6.
La plupart des spammeurs ne vont pas sur votre site, ils utilisent des scripts qui injectent directement le commentaire de manière automatisée, donc ils ne cliquent pas physiquement sur le bouton "add comment".
L'astuce consiste à vérifier que le bouton à bien été cliqué avant d'enregistrer. Pour celà, vous devez ajouter un champ caché dans votre formulaire de commentaire :
<input id='you_are' type='hidden' name='you_are'
value='afuckingspammer' />
Ensuite il vous faut modifier le bouton du formulaire (qui est normalement de type "submit") de telle sorte que lorsqu'on clique, une petite commande javascript va changer la valeur du champ caché de "afuckingspammer" à "ahuman" :
<input
class="input_submit" type='button' value='ADD COMMENT' onClick="document.getElementById('you_are').value='ahuman';
this.form.submit();" />
En gros voilà ce que cela doit donner :
<form method='post' action='index.php?x=save_comment' name='commentform' accept-charset='UTF-8'>
<a name="addcomment">Votre commentaire :</a><br />
<textarea name='message' rows='5' cols='80'></textarea><br /><br />
<label for="name">Votre nom ?</label><br />
<!-- ANTISPAM TRICK -->
<input id='you_are' type='hidden' name='you_are' value='afuckingspammer' />
<input type='text' name='name' class='input' value='<VINFO_NAME>' id="name"/><br /><br />
<label for="url">'http://'votre site (s'il y en a un...)</label><br />
<input type='text' name='url' class='input' value='<VINFO_URL>' id="url"/><br /><br />
<label for="email">Votre adresse e-mail. (Elle sera cachée)</label><br />
<input class='input' type='text' name='email' value='<VINFO_EMAIL>' id="email"/><br /><br />
<input type='checkbox' value='set' name='vcookie' id="saveinfo" /> ... se souvenir de moi ... (Cookie)  
<!-- ANTISPAM BUTTON -->
<input class="input_submit" type='button' value='Envoyer/Post'
onClick="document.getElementById('you_are').value='ahuman'; this.form.submit();" />
<input type='hidden' name='parent_name' value='<IMAGE_NAME>' />
<input type='hidden' name='parent_id' value='<IMAGE_ID>' />
<input type='hidden' name='parent_name' value='<IMAGE_NAME>' />
</form>
Et enfin il faut modifier le fichier functions_comments.php de pixelpost situé dans le répertoire ..\includes\ de telle sorte que la ligne du code enregistrant le commentaire ne soit autorisée que si le champ caché à bien été mis à la valeur "ahuman" :
if ($_POST['you_are'] == "ahuman") { ***ligne du code enregistrant le commentaire*** }
... comme dans l´exemple ci-dessous :
<?php
// SVN file version:
// $Id: functions_comments.php 233 2007-04-08 07:20:51Z blinking8s $
// ##########################################################################################//
// SAVE COMMENT
// ##########################################################################################//
// variable which says if notification can be send (SPAM and problem free comment)
// by default it can't
$email_flag = 0;
// ANTI SPAM TRICK - J. ROUMAGNAC
if ($_POST['you_are'] == "ahuman")
{
if(isset($_GET['x'])&&$_GET['x'] == "save_comment")
{
// token check ..... etc.....
Et comme toujours, beaucoup plus bas dans le code, ne pas oublier de fermer ce satané ´if´ comme ceci (sinon ça marche plus ;-\) :
} // end if is not in the blacklist
else $extra_message = "$lang_message_banned_comment"
}
}
} // end if ANTI SPAM TRICK J. ROUMAGNAC
// ##########################################################################################//
// EMAIL NOTE ON COMMENTS
// ##########################################################################################//
Forcément, çà n'arrête pas les spams manuels, mais bon ceux là sont déjà plus limités. Si d'un seul coup les spam recommencent, c'est que les spammeurs ont pigé le truc et injectent directement la valeur "ahuman" avec leurs scripts, dans ce cas tentez de changer cette valeur par autre chose.