Bonsoir Brigitttte,
j'ai moi-même été confronté au spam sur mon site et j'ai opté pour une solution simple, mais efficace... Supprimer le site.
Non, je plaisante, rassures-toi !
Mon site repose actuellement sur un CMS (Nuked-Klan) qui, tout au moins pour la version que j'ai installé, contient des failles de sécurité. A ce titre j'ai du modifier le code pour éviter le spam (une nécessité lorsque des liens postés sur un site ayant trait aux jeux en ligne, et dont certains membres n'ont pas encore atteint l'âge de la majorité, font référence à du contenu pornographique. Bref...).
Pour contourner ce problème j'ai eu recours à l'interdiction pure et simple de l'écriture d'url dans les messages postés. Pour ce faire j'ai utilisé l'expression régulière preg_match qui permet de déterminer si oui ou non un texte contient des mots que l'on veut filtrer. Voici le code en question :
- Code: Tout sélectionner
$texte = 'visitez sans plus attendre mon site : http://www.site-pas-beau.com';
if (preg_match ("#http://#" , $texte)) {
echo "L'utilisation de liens dans un message est interdit...";
redirect($redirection, 2);
}
La variable $texte contient le texte en dur. Celui-ci contient bien une url commençant par
http://.
L'instruction conditionnelle "if" va donc vérifier si oui ou non notre variable contient http:// et, si c'est le cas, afficher un message d'erreur, puis effectuer une redirection.
Avec cette méthode je n'ai plus jamais eu de spam de la part de robots. Evidemment cette solution est très restrictive car elle empêche également les utilisateurs enregistrés d'inscrire des url dans leurs messages, mais il suffirait de peu pour améliorer ce code. En y ajoutant une seconde instruction conditionnelle permettant de déterminer si le message a été posté par un membre enregistré ou par un utilisateur inconnu, il serait possible de permettre l'écriture d'url aux membres inscrits (et l'inscription se faisant via un captcha, la méthode devrait fonctionner).
A tester, un code dans ce genre :
- Code: Tout sélectionner
$texte = 'visitez sans plus attendre mon site : http://www.site-pas-beau.com';
if ($user == 'registered') {
*** exécution normale du script, avec autorisation de mettre des url dans le texte ***
}
else if (preg_match ("#http://#" , $texte)) {
echo "L'utilisation de liens dans un message est interdit...";
redirect($redirection, 2);
}
$user étant une variable contenant un tableau de la liste des membres inscrits...
Bon, je n'ai pas testé la viabilité de ce code, mais il me semble que ce serait un bon moyen de résoudre ton problème.
En espérant que ça pourra t'aider.
