Moyen d'éviter le SPAM de robots sur un formulaire de contact ?

Help. Personne n’a jamais mis en application l’idée de InSiderZ ???

Salut hyperion66,
J’ai retesté ta page, et je n’ai pas été redirigé vers l’accueil. Pas de bug du côté de l’utilisation.
En voilà la preuve :
http://img211.imageshack.us/img211/1428/sanstitre1ov5.jpg
EnjoY

Oui, mais j’ai supprimé le code dans la page de traitement. Donc, j’ai toujours du spam.

Peux tu indiquer le code PHP de la page de traitement ?

Le code au complet ?

On s’accroche alors !

Pfoula, que cay pas bô :o

Pourquoi mélanger HTML et PHP ? :neutre:

Fais plutot une page PHP (sans tes en-têtes et tout le tralala) pour traîter ton mail. Là tu y mets le code avec la condition pour le champ hidden, et tu envoies le mail si tout est bon. Et avec un if(mail()), tu rediriges vers une page différente, qui contiendra toutes les infos envoyées (il y a plusieurs methodes plus ou moins pratiques et propres pour le faire). L’avantage sera la clarté du code, et il y a de grandes chances pour que cela fonctionne correctement. Là c’est foutoir, tu mélanges PHP et HTML, pour s’y retrouver c’est pas le top. Enfin bon.

Dans un premier temps, modifie ça :


//On affiche ici les informations saisie


echo " <u>Votre identité</u> : ".$_POST["prenom"]." ".$_POST["nom"]."<br><br>";
echo " <u>Votre adresse</u> : ".$_POST["adresse"]." ".$_POST["codepostal"]." ".$_POST["ville"]."<br><br>";
echo " <u>Votre adresse de messagerie</u> : ".$_POST["email"]."<br><br>";
echo " <u>Votre numéro de téléphone</u> : ".$_POST["telephone"]."<br><br>";
echo " <u>Société</u> : ".$_POST["societe"]."<br><br>";
echo " <u>Raison du message</u> : ".$_POST["objet"]."<br><br>";
echo " <u>Commentaire</u> : ".$_POST["commentaires"]."<br><br>";
echo " <u>Plage horaire</u> : ".$_POST["horaire"]."<br><br>";
echo " <u>Votre adresse IP</u> : ".$REMOTE_ADDR."<br><br>";
echo " <u>Votre navigateur</u> : ".$browser."<br><br>";
echo " <u>Votre système d'exploitation</u> : ".$OS."<br><br>";


//On envoit un mail contenant les données


mail("contact@zerobug.fr","Contact depuis le site zerobug","Nom et prénom : $titre $nom $prenom\n\nSociété : $societe \n\nAdresse de messagerie : $email\n\nTéléphone : $telephone\n\nAdresse : $adresse $codepostal $ville\n\nPlage horaire : $horaire\n\nObjet du message : $objet\n\nCommentaires : $commentaires\n\nA connu zerobug : $marketing\n\nIP : $IP\n\nNavigateur : $browser\n\nSystème d'exploitation : $OS","From: $email\nReply-To: $email");
?>
</p>
<p align="right">Merci pour votre message.<BR />
Nous vous répondrons dans les meilleurs délais.<br />
</p>

par ça :


if(isset($_POST['protect']) && (empty($_POST['protect']) || $_POST['protect'] == ''))
{
$message = "
Nom et prénom : " . $titre . $nom . $prenom . "\n\n
Société : " . $societe . "\n\n
Adresse de messagerie : " . $email . "\n\n
Téléphone : " . $telephone . "\n\n
Adresse : " . $adresse . $codepostal . $ville . "\n\n
Plage horaire : " . $horaire . "\n\n
Objet du message : " . $objet . "\n\n
Commentaires : " . $commentaires . "\n\n
A connu zerobug : " . $marketing . "\n\n
IP : " . $IP . "\n\n
Navigateur : " . $browser . "\n\n
Système d'exploitation : " . $OS;
$headers = "From: " . $email . "\n";
$headers .= "Reply-To: " . $email;
if(mail("contact@zerobug.fr", "Contact depuis le site zerobug", $message, $headers))
{
echo " <u>Votre identité</u> : ".$_POST["prenom"]." ".$_POST["nom"]."<br><br>";
echo " <u>Votre adresse</u> : ".$_POST["adresse"]." ".$_POST["codepostal"]." ".$_POST["ville"]."<br><br>";
echo " <u>Votre adresse de messagerie</u> : ".$_POST["email"]."<br><br>";
echo " <u>Votre numéro de téléphone</u> : ".$_POST["telephone"]."<br><br>";
echo " <u>Société</u> : ".$_POST["societe"]."<br><br>";
echo " <u>Raison du message</u> : ".$_POST["objet"]."<br><br>";
echo " <u>Commentaire</u> : ".$_POST["commentaires"]."<br><br>";
echo " <u>Plage horaire</u> : ".$_POST["horaire"]."<br><br>";
echo " <u>Votre adresse IP</u> : ".$REMOTE_ADDR."<br><br>";
echo " <u>Votre navigateur</u> : ".$browser."<br><br>";
echo " <u>Votre système d'exploitation</u> : ".$OS."<br><br>";
echo "<p>Merci pour votre message. Nous y r&eacute;pondrons dans les plus brefs d&eacute;lais.</p>";
} else echo "<b>Erreur dans l'envoi du mail. Veuillez contacter un administrateur.</p>";
} else echo "<b>Vilain Robot ! grrrr</b>";

Testes ça dans un premier temps :slight_smile:

MArche pas, il me met vilain robot tout le temps.

tu as un champ hidden avec id et name = protect, à l’intérieur des balises de formulaire ?


tu as mis <imput au lieu de <input, c'est donc normal =)

J’ai ça dans le formulaire :

CQFD :slight_smile:
Edité le 03/09/2007 à 23:30

Effectivement, ça marche mieux…
Y’a moyen de tester comme si c’était un robot ?

changes value="" par value=“H” par exemple, ça devrait te bloquer.

Effectivement, ça bloque.
Merci beaucoup InSiderZ pour ton énorme aide, c’est franchement très sympa…

J’espère que je vais être débarassé des spams.

Mais de rien :jap:

Par contre je serais toi je nommerais ce champ autrement que “protect”, car les robots sont plus attirés par les champs du genre “website”, afin d’y répendre leur pub. J’suis pas sûr que “protect” les incite à y poster quelque chose. Enfin ça marchera pour certains, pas pour tous. (si tu changes le nom du champ, penses aussi à le changer dans la condition du traitement aussi)

Ok, merci.

Zut, encore reçu un spam ce matin. Il y a moyen d’interdire le langage HTML dans un champ ?
Style, interdire a href=

pour les spams, si ton adresse est récupérée, c’est normal, tu est maintenant enregistré dans leurs banques d’adresses…
Moi je serais toi j’éviterais d’afficher en clair ton adresse comme tu le fais actuellement, même en passant par javascript, on ne sait jamais. Mieux vaut mettre le lien vers le formulaire à la place :wink:

Le souci, c’est que je ne reçois du SPAM QUE par le formulaire.

Là normalement le spam ne devrait pas passer, mais tout est possible. Tu peux toujours tenter d’afficher un champ en javascript, et tester si ce champ n’est pas rempli, on envoi une erreur. Le robot n’interprêtera pas le javascript, donc ne le verra pas et ne le remplira pas.