éviter certains mots dans un champs

toutine
Invité n'ayant pas de compte PHPfrance

07 juil. 2006, 12:32

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 !

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 juil. 2006, 22:48

Salut,

Une petite expression régulière peut être

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
ViPHP | 656 Messages

08 juil. 2006, 03:57

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!
}

toutine
Invité n'ayant pas de compte PHPfrance

09 juil. 2006, 18:01

Merci beaucoup à vous deux ;) Je m'en vais étudier tout ça de plus près !

toutine
Invité n'ayant pas de compte PHPfrance

09 juil. 2006, 18:22

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

10 juil. 2006, 09:53

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); 

Invité
Invité n'ayant pas de compte PHPfrance

10 juil. 2006, 14:04

Tout marche nickel !

Merci à tous ! :o