Page 1 sur 1

éviter certains mots dans un champs

Posté : 07 juil. 2006, 12:32
par toutine
Bonjour à tous !

Sujet aux spams, je voudrais faire quelque chose pour les éviter.

J'ai un formulaire de livre d'or.

J'aimerais lors de la validation, qu'il y ait un test sur ces champs afin de détecter plusieurs mots "spams". S'il en détecte, retour sur le formulaire sinon validation.

J'ai fait pour un des champs avec reconnaissance pour un mot, ça fonctionne.

Mais faire sur tous les champs avec plusieurs mots je suis bloqué... Pouvez-vous m'aider ?

Merci !

Posté : 07 juil. 2006, 22:48
par Truc
Salut,

Une petite expression régulière peut être

Posté : 08 juil. 2006, 03:57
par Ultiny
Oui tu peu te faire une petite fonction par exemple :
function antispam($string)
{
    return (preg_match("la petite expression qui va bien comme le disais Truc")) ? true : false;
}
ensuite on l'appel, n'esite pas à coller tous les champs ensembles pour les traiter d'un coup :
if (antispam($_POST['un_champs'].' '.$_POST['un_champs']))
{
   // Ici nous ne sommes pas satisfait des données reçus alors Grrr!! Ouaf Ouaf!
}

Posté : 09 juil. 2006, 18:01
par toutine
Merci beaucoup à vous deux ;) Je m'en vais étudier tout ça de plus près !

Posté : 09 juil. 2006, 18:22
par toutine
Je ne vois pas trop pour ta fonction Ultiny. Je vois à peu près ce que l'expression régulière fait, mais comment mettre l'expression dans ta fonction ?

J'ai essayé, ça ne fonctionne pas des masses... :roll:

En fait cette expression remplace certains mots, mais moi je désire juste la détection puis action en fonction.

Posté : 10 juil. 2006, 09:53
par Ryle
La fonction d'ultiny antispam te permet de tester une chaine (en l'occurence l'un des champs renseigné dans ton formulaire) en regardant grace à l'expression régulière si tu y trouves des éléments interdits.

En gros, si la chaine que tu testes contient le mot "viagra" et que ton expression régulière la vérifie, la fonction retourne vrai. Cela te permet de savoir que le champ contient probablement du spam et agir en conséquence (informer l'utilisateur, ne pas enregistrer les données, remplacer les mots par des étoiles, ...)

ex :
// retourne vrai si l'expression "viagra" (quelle que soit sa casse grace au "i") est contenue dans $string
return (preg_match("/viagra/i", $string) != 0); 

Posté : 10 juil. 2006, 14:04
par Invité
Tout marche nickel !

Merci à tous ! :o