Formulaire avec un anti spam pour site asso

Fermé
danvon Messages postés 4 Date d'inscription mercredi 11 septembre 2019 Statut Membre Dernière intervention 15 septembre 2019 - Modifié le 11 sept. 2019 à 19:50
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 - 15 sept. 2019 à 18:38
Bonjour,
Je ne suis pas très pointu en programmation. J'ai fait un site pour une association dont je suis membre en utilisant un kit d'un petit site responsive hébergé chez free. J'ai voulu y ajouter un formulaire (du site Webd) et jusque là tout va bien.

Mais depuis 1 mois on reçoit chaque jour entre 60 à 80 mails de spam. J'ai fait le tour sur internet, je sais que ce pb revient régulièrement mais j'ai du mal à trouver une solution qui puisse fonctionner chez free. Il existe des solutions très techniques semble-t'il en PHP mais bon je ne suis pas un pro et c'est pas simple, tout ça pour un simple formulaire.

Voici le script de mon formulaire :


<div class="row">
<div class="col g-7">
<form action="http://w2.webreseau.com/fr/services/FormToEmail/FormToEmail2.asp" ENCTYPE="multipart/form-data" method="POST">
<input type="hidden" name="_id" value="84784454555">
<input name="_subject" type="hidden" value="Commentaires fr">
<input name="_requiredFields" type="hidden" value="Sujet,Nom,Courriel,Message">
<input name="_userinfo" type="hidden" value="1"><!-- IP -->
<input name="_replyToField" type="hidden" value="Email"><!-- répondre à -->
<input name="_redirect" type="hidden" value="http://www.mon-site.com/fr-v.html#contact">
<fieldset>
<div>
<label for="contactName">Nom, Prénom</label>
<input name="nom" type="text" id="contactName" size="35" required="required" >
</div>
<div>
<label for="contactEmail">Courriel</label>
<input name="courriel" type="text" id="contactEmail" size="35" required="required" >
</div>
<div>
<label for="contactSubject">Sujet </label>
<input name="sujet" type="text" id="contactSubject" size="35" required="required" >
</div>
<div>
<label for="contactMessage">Message</label>
<textarea name="message" id="contactMessage" rows="15" cols="50"></textarea>
</div>
<div>
<button class="submit">Envoyer</button>
<span id="image-loader"> <img src="images/loader.gif" alt=""> </span> </div>
</fieldset>
</form>
<div id="message-warning"></div>
<div id="message-success"> <i class="icon-ok"></i>Votre message a été envoyé, merci !<br>Your message was sent, thank you!<br>
</div>
</div>


Si quelqu'un pouvait m'indiquer un bout de code à ajouter dans mon script de formulaire afin d'éloigner une partie des spam.

Merci à vous
A voir également:

4 réponses

dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
Modifié le 11 sept. 2019 à 20:55
Bonsoir,

Sans PHP, tu peux essayer le captcha de Google, quoique, je ne suis pas certain qu'il soit possible de l'utiliser sans PHP : https://www.google.com/recaptcha/about/

Sinon, il ne reste que le JavaScript.

Par exemple, de cette manière :

Il faut commencer par créer une petite image contenant 2+2= que tu appelleras code.gif et que tu placeras dans le dossier images de ton site.

Ensuite, tu ajoutes ce script dans la page du formulaire, avant le formulaire.

<script type="text/javascript">
  function verifform(formulaire)
  {
      if(formulaire.code.value != "4")
      alert('Erreur code anti-spam !');

      else
      formulaire.submit();
  }
</script>



Dans le formulaire tu ajoutes une ligne au formulaire, avant le bouton "Envoyer" :

<p>Code anti-spam <img src="images/code.gif"> <input type="text" name="code" size="1" maxlength="1"></p>



Puis, tu modifies la ligne du bouton "Envoyer" :

<button  onClick="verifform(this.form)" class="submit">Envoyer</button>



0
danvon Messages postés 4 Date d'inscription mercredi 11 septembre 2019 Statut Membre Dernière intervention 15 septembre 2019
11 sept. 2019 à 23:17
J'ai modifié mon formulaire mais ça ne fonctionne pas. Si je remplis mal la case 2+2 ou si je ne la remplis pas, une fenêtre apparait pour me dire "Erreur de calcul dans la case anti-spam !", ce qui est normal mais lorsque dans cette petite fenêtre je clique sur "ok" alors ça envoie le formulaire automatiquement.

Voici le code que j'ai mis :

    <div class="col g-7">
<script type="text/javascript">
  function verifform(formulaire)
  {
      if(formulaire.code.value != "4")
      alert('Erreur de calcul dans la case anti-spam !');
      else
      formulaire.submit();
  }
</script>
      <form action="http://w2.webreseau.com/fr/services/FormToEmail/FormToEmail2.asp" ENCTYPE="multipart/form-data" method="POST">
        <input type="hidden" name="_id" value="5484984644854">
        <input name="_subject" type="hidden" value="Commentaires fr">
        <input name="_requiredFields" type="hidden" value="Sujet,Nom,Courriel,Message">
        <input name="_userinfo" type="hidden" value="1"><!-- IP -->
        <input name="_replyToField" type="hidden" value="Email"><!-- répondre à -->
        <input name="_redirect" type="hidden" value="http://www.mon-site.com/fr-v.html#contact">
        <fieldset>
          <div>
            <label for="contactName">Nom, Prénom</label>
            <input name="nom" type="text" id="contactName" size="35" required="required" >
          </div>
          <div>
            <label for="contactEmail">Courriel</label>
            <input name="courriel" type="text" id="contactEmail" size="35" required="required" >
          </div>
          <div>
            <label for="contactSubject">Sujet </label>
            <input name="sujet" type="text" id="contactSubject" size="35" required="required" >
          </div>
          <div>
            <label  for="contactMessage">Message</label>
            <textarea name="message"  id="contactMessage" rows="15" cols="50"></textarea>
          </div>
          <div>
            <label>Anti-spam<br />Calculez 2 + 2 =</label>
            <input type="text" name="code" size="1" maxlength="1">
          </div>
          <div>
            <button onClick="verifform(this.form)" class="submit">Envoyer</button>
            <span id="image-loader"> <img src="images/loader.gif" alt=""> </span> </div>
        </fieldset>
      </form>
      <div id="message-warning"></div>
      <div id="message-success"> <i class="icon-ok"></i>Votre message a été envoyé, merci !<br>Your message was sent, thank you!<br>
      </div>
    </div>


Si quelqu'un a la solution, j'avoue être perdu avec cette histoire de formulaire.
0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
Modifié le 12 sept. 2019 à 08:48
Bonjour,

Je ne comprends pas pourquoi avec ton formulaire ça ne fonctionne pas. Le JavaScript n'est peut-être pas adapté à cette fonction.

Sur mes formulaires, je n'utilise pas ce genre de script comme captcha, mais seulement pour vérifier que les champs ne sont pas vides. Pour l'anti-spam, j'utilise le même principe du calcul très simple (2+2=4), mais la vérification est faite en PHP.

Dans ton cas, ce n'est pas possible, le fichier de traitement du formulaire se trouve chez ton prestataire.
0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
13 sept. 2019 à 07:17
Bonjour,

Après quelques recherches, je pense avoir trouvé la solution. Il faut ajouter onsubmit="return false" dans l'entête du formulaire :


<script type="text/javascript">
  function verifform(formulaire)
  {
      if(formulaire.code.value != "4")
      alert('Erreur de calcul dans la case anti-spam !');
      else
      formulaire.submit();
  }
</script>
    <div class="col g-7">
     <form action="http://w2.webreseau.com/fr/services/FormToEmail/FormToEmail2.asp" ENCTYPE="multipart/form-data" method="POST" onsubmit="return false">
        <input type="hidden" name="_id" value="5484984644854">
        <input name="_subject" type="hidden" value="Commentaires fr">
        <input name="_requiredFields" type="hidden" value="Sujet,Nom,Courriel,Message">
        <input name="_userinfo" type="hidden" value="1"><!-- IP -->
        <input name="_replyToField" type="hidden" value="Email"><!-- répondre à -->
        <input name="_redirect" type="hidden" value="http://www.mon-site.com/fr-v.html#contact">
        <fieldset>
          <div>
            <label for="contactName">Nom, Prénom</label>
            <input name="nom" type="text" id="contactName" size="35" required="required" >
          </div>
          <div>
            <label for="contactEmail">Courriel</label>
            <input name="courriel" type="text" id="contactEmail" size="35" required="required" >
          </div>
          <div>
            <label for="contactSubject">Sujet </label>
            <input name="sujet" type="text" id="contactSubject" size="35" required="required" >
          </div>
          <div>
            <label  for="contactMessage">Message</label>
            <textarea name="message"  id="contactMessage" rows="15" cols="50"></textarea>
          </div>
          <div>
            <label>Anti-spam<br />Calculez 2 + 2 =</label>
            <input type="text" name="code" size="1" maxlength="1">
          </div>
          <div>
            <button onClick="verifform(this.form)" class="submit">Envoyer</button>
            <span id="image-loader"> <img src="images/loader.gif" alt=""> </span> </div>
        </fieldset>
      </form>
      <div id="message-warning"></div>
      <div id="message-success"> <i class="icon-ok"></i>Votre message a été envoyé, merci !<br>Your message was sent, thank you!<br>
      </div>
    </div>
0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451 > dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021
13 sept. 2019 à 10:59
Je te conseille d'utiliser une image pour afficher le calcul du captcha pour plus d'efficacité, les robots spammeurs sont capables de lire et d'interpréter beaucoup de choses :

 <label>Anti-spam<br />Calculez <img src="images/code.gif" alt="Code"></label>


L'image :
0
danvon Messages postés 4 Date d'inscription mercredi 11 septembre 2019 Statut Membre Dernière intervention 15 septembre 2019
13 sept. 2019 à 23:39
Bonsoir,
je viens de faire des tests et ta solution semble être la bonne. L'envoi du formulaire fonctionne bien. Maintenant reste à voir si ça a un effet sur les robots. Si déjà ça limite les 10ènes de courriel quotidiens, ce sera bien.

En tout cas merci pour ton soutien.
0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
Modifié le 14 sept. 2019 à 06:32
Bonjour,

Très bien ! Tiens nous au courant de l'efficacité de cette solution.

Malheureusement, je ne suis pas certain qu'un anti-spam en JavaScript soit efficace contre des robots-spammeurs.
0
danvon Messages postés 4 Date d'inscription mercredi 11 septembre 2019 Statut Membre Dernière intervention 15 septembre 2019
Modifié le 15 sept. 2019 à 17:49
Bonjour Dugenou,
Tes craintes sont justifiées. L'ajout de ce JavaScript n'a strictement rien changé (même en mettant le 2 + 2 en image). J'ai lu sur internet qu'il existe des champs cachés dans les formulaires pour induire les robots en erreur mais bon je n'ai pas réussi à trouver un exemple concret de ce type de script. Le petit site de l'association est hébergé chez OVH, donc normalement le PHP devrait fonctionner. Peut être devrais-je chercher de ce coté. Je voulais éviter de rentrer dans des scripts trop complexes pour un simple formulaire mais bon je crois que je ne vais pas pouvoir y échapper.
0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
15 sept. 2019 à 18:38
Bonjour, Je ne suis pas étonné, je pense que les robots-spammeurs passent outre le JavaScript.
Le système du champ caché ne fonctionne qu'avec du PHP.
Tu trouveras très facilement de nombreux scripts de formulaires de contact en PHP. Tu pourras alors y ajouter un système de captcha ou anti-spam efficace.
Tu peux même utiliser le système du calcul et du résultat à écrire dans un champ, avec une vérification en PHP.
0