Bloquer un spam de formulaire sans captcha?

Fermé
bigpot Messages postés 26 Date d'inscription vendredi 16 juillet 2010 Statut Membre Dernière intervention 7 octobre 2010 - 31 août 2010 à 15:41
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 31 août 2010 à 17:59
Bonjour,

Je voudrai savoir comment bloquer un spam sans passer par un captcha? j'en reçois sur mes commentaires et je voudrai m'en débarrasser.

Merci de votre aide


4 réponses

Apatik Messages postés 5304 Date d'inscription mercredi 28 janvier 2009 Statut Contributeur Dernière intervention 29 mai 2016 782
31 août 2010 à 15:45
Des spams..
Toujours la même IP/plage? Bloque la via un .htaccess (gaffe si c'est une plage, tu vas aussi sans doute bloquer des utilisateurs)
Si c'est répété tu peux bloquer l'accès à la page si on la demande plus de x fois par seconde par exemple, toujours via le .htaccess.

Ou encore, via ton code de traitement du formulaire, tu peux automatiquement le supprimer en fonction des mots (en anglais sans doute) qu'il y a dedans..
0
bigpot Messages postés 26 Date d'inscription vendredi 16 juillet 2010 Statut Membre Dernière intervention 7 octobre 2010
31 août 2010 à 17:06
merci Apatik pour cette réponse.

Peut tu m'expliquer d'avantage la seconde méthode. Je ne capte pas!

merci
0
dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 476
31 août 2010 à 17:14
Si ton spam provient de bot, tu peux aussi utiliser un formulaire en AJAX en insérant un temps de latence entre chaque champs du formulaire.
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
31 août 2010 à 17:29
Salut.

Tu peux créer un script PHP qui génère un jeton.
Ce jeton sera affiché (echo) et enregistré dans une variable de session ($_SESSION['contactFormToken']).

Sur ton formulaire, crées un champ
<input type="hidden" name="contactFormTokenz" />
(j'ai volontairement ajouté un "z" à "Token" si jamais l'option register_globals est activée)
Ensuite, à l'aide d'AJAX, tu pourras récupérer un jeton et le mettre comme valeur pour ce champ.

Lors de la soumission, vérifie si $_POST['contactFormTokenz'] est égal à $_SESSION['contactFormToken'].
Si oui, alors fait les opérations nécessaires et supprime le jeton.
0
dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 476
31 août 2010 à 17:33
Peux-tu stp expliquer le but du script ? Vérifier que la session est la même ? Si l'utilisateur est entrée directement sur la page du formulaire, cela fonctionne ?
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
31 août 2010 à 17:59
Les robots ne comprennent pas le Javascript, la requête AJAX ne sera donc pas envoyée, et donc le script PHP ne sera pas exécuté => aucun jeton ne sera généré ni stocké en session

Avec un utilisateur normal, la requête AJAX sera effectuée. Tu peux la faire au chargement de la page (onload) du formulaire.
0