Bonjour,
Evangun c'est pas bien de dissuader les gens d'utiliser les expressions régulières :p
Christclamard, le problème que tu rencontres se situe au niveau de ton expression pour tester les crochets (] et [). Ces deux caractères sont utilisés pour définir des 'plages' de caractères. Par exemple, si tu veux un chiffre tu notes [0-9] dans ta regexp, ça signifie "n'importe quel chiffre de 0 à 9".
Puisque tu veux trouver le caractère [, tu dois faire une petite manipulation que je t'explique plus bas.
De plus, tu peux utiliser les "ou" dans l'expression directement plutôt que plusieurs appels à eregi grace au caractère '|' (pipe).
En bref, tu peux faire ton test de cette manière :
if (eregi('[]/[]|//|www|url',$message)){
l'expression régulière se construit de cette manière :
1) On veut 'matcher' une série de caractères précis, on les places donc dans une liste entre crochets :
[a] => capture la lettre 'a'
[/] => Capture le caractère '/'
[adr]=> Capture les caractères a, d et r
...
Pour capturer des crochets, il faut mettre le crochet fermant ']' au début de la liste et le crochet ouvrant '[' à la fin. Ce qui donne :
[]a] => Capture la lettre 'a' et le crochet fermant
[]/[] => Capture les caractères '[', '/' et ']'
2) ensuite à l'aide du 'ou' noté '|', on ajoute les autres possibilités :
'[]/[]|//|www|url' => Capture les chaines qui contiennent un caractère '[', '/' ou ']' ou les chaines '//', 'url' ou 'www'
Petite remarque, si ton message contient '//', il contient forcement le caractère '/', tu peux donc te passer de tester le double slash. Par contre, puisque tu veux juste empêcher e spam et plus précisement les url, interdire le '/' n'est pas pertinant et peut être gênant. Il vaut mieux tester seulement le double slash. Je laisse comme ça pour que tu puisse adapter à ta guise.
Il y a énormement de possibilités avec les expressions régulières, tu pourrait en écrire une qui vérifie qu'un message contient bien un lien et pas seulement les caractères composant ton lien. Visiblement, tu cherches à bloquer les messages contenant "[url]www.monsite.com[/url]". Tu peux écrire une expression qui correspond à ça exactement.
Dans certains cas un strpos est plus "pratique" mais il y en a d'autres pour lesquels il ne faut pas hésiter. Pour savoir quand utiliser l'un ou l'autre, le mieux est de les connaitres.
Tu trouvera plus d'infos sur les regexp sur pas mal de sites (google te fournira des tutoriel assez facilement). Pour strpos, php.net est sufisant, c'est une fonction basique.
Quand à ton problème de départ (le javascript qui ne bloquait pas les spams), à mon avis les robots qui te spament n'ont pas le JS et donc ne sont pas bloqués. Ou alors, ils postent directement en appelant la page de validation sans passer par ton formulaire.
Bonne continuation.
Grrrrrrrrrrr