Alors que mon site n’est même pas complètement en ligne (j’ai pour le moment une page d’accueil d’attente), je reçois tous les jours des SPAM par des robots grâce à mon formulaire de contact (http://www.zerobug.fr/contact.php). Tous les spams arrivent avec des adresses GMAIL. J’interdirai bien les adresses Gmail, mais assez risqué si plusieurs de mes clients ont des adresses Gmail.
Connaitriez-vous un moyen à mettre en place afin que je sois pas envahi par la Spam de ces robots ?
C’est la faute au lien que tu as mis sur ta page. Soit tu le retire, en imposant aux visiteurs l’utilisation du formulaire, soit tu modifie un caractère, afin que le mail soit inutilisable comme tel. Par exemple, contact[at]tonsite[point]fr. Les visiteurs remplaceront d’eux même [at] par une arrobase et [point] par un point.
Sinon, tu peux aussi sécuriser le formulaire contre les robots (si l’envie leur prend de le remplir). Sachant qu’un robot remplis tous les champs d’un formulaire, tu crée un champ invisible (input type=“hidden”), que tu vas par exemple appeler “name”. Tu n’y définis rien comme valeur. Un utilisateur “normal” ne voyant pas ce champ, il restera vide, mais le robot lui, va le remplir avec du texte. Donc dans le traitement, si $_POST[‘name’] n’est pas vide, tu n’evoie pas le formulaire, car cela voudra dire que c’est un robot qui l’a rempli. Astucieux n’est-ce pas ?
edit : le lien vers le mail est également sur la page d'accueil et dans le pied-de-page. C'est donc la source de ton attaque SPAM. Je te conseilles donc de remplacer ces liens mail par un lien vers le formulaire, démuni de toute adresse mail visible (comme expliqué ci-dessus).
Non, les seuls spam que j’ai sont ceux à partir du formulaire, avec le formulaire rempli de liens.
Je n’ai jamais reçu de SPAM à partir des liens mails directs, car j’ai essayé de protéger cela en faisant un script de ce type :
A quoi ressemblerait le code pour le cas où le champ “hidden” serait rempli et que le formulaire ne soit pas actif ?
A quoi ressemble le champ Code Postal dans les mails générés par les robots ?
Déjà si tu élimines tout les messages pour lesquels ce champ est manifestement incorrect, tu dois en diminuer fortement le nombre, non ?
Tu as une solution simple, puisque tu es en PHP, c’est de faire un formulaire qui ne “ressemble” à rien, c’est à dire que le robot ne pourra pas comprendre simplement : là, un robot se base sur les noms des champs, ex: ‘name’.
Donc :
vérifier la validité des champs (si tu ne le fais pas déjà)
nommer tes champs aléatoirement, avec en session un moyen qui te permette de récupérer la relation nom aléatoire => nom réel (moi personnellement, le champ pour l’image servant à coincer les spammers est généré avec une clef aléatoire)
Cette solution peut en plus être plus sévère en ajoutant un cryptage afin d’éviter que le spammer puisse reconstituer le bon champ (ainsi la clef est cryptée, donc peut contenir n’importe quoi sans qu’il ne sache quoi, et sinon t’as les sessions ;):))
Enfin, plutôt que de bannir gmail, conserve l’IP des spammers. Ca te permettra d’agir en conséquences (éventuellement, en bannissant l’ip, mais les robots de spam sont avant tout des pc zombis :/)
ça veut dire que tu as déja envoyé des informations au navigateur. Ce code doit être inscrit avant tout affichage (pas d’echo, pas d’html), sinon le résultat est une erreur come celle-ci.
Mais il me renvoit automatiquement sur la page location.
C’est pour ça que je demandais ce que voulais exactement dire if(!empty($_POST[‘protect’]) || $_POST[‘protect’] !== ‘’) !
et bien ça veut dire “si le champ “protect” du formulaire envoyé n’est pas vide, ou s’il contient autre chose qu’un vide, on redirige vers zerobug.fr. Sinon, on traite le mail”.
à la place du header location, fais un echo $_POST[‘protect’];, et retentes.
Juste pour l’info, ce bout de code tu le mets sur la page qui traite le mail hein, pas sur le formulaire, il sert à rien sinon. Sur le formulaire tu mets juste le champ hidden.
Oui, je mets bien le code sur la page de traitement.
Avec echo $POST…, ça marche toujours pas. Plus de message d’erreur, mais le mail n’arrive plus non plus
oui, c’est normal qu’il n’y ai plus de message d’erreur, c’est pour voir ce que retourne $_POST[‘protect’].
Et dans ton formulaire, le champ protect est sous quelle forme ? on peut avoir le code ?
Après essai : [quote=""]
Parse error: syntax error, unexpected ‘}’ in /home.3/zerobug/www/contact_mail.php on line 174
[/quote]
Tu as oublié de fermer une accolade quelque part…