Eviter le spam ... par temporisation

DanDan Member
octobre 2010 modifié dans Entraide
Bonjour,

Je cherche à éviter le spam sur un envoi de formulaire mail php.
Il y a bien sûr la possibilité d'utiliser un "captcha" mais je ne suis pas très favorable à cette technique, un peu contraigante pour l'utilisateur ...

je souhaiterai en fait, limiter l'envoi des mails successifs parfois, par une temporisation ...
du genre que le formulaire ne puisse envoyer les mails qu'avec une temporisation entre chaque envoi (réglable dans le code) de l'ordre par exemple, d'1 minute ...

Qui aurait un code, simple (php, javascript, ...) à associer à un formulaire pour faire cela ?

Ce serait suffisant dans mon cas, et pas contraignant pour les utilisateurs ...

(j'ai eu le cas d'un internaute qui a envoyé 12 fois le même message en quelques secondes, en faisant "envoyer" puis "retour sur le navigateur", puis "envoyer", puis "retour", etc) bien chiant quoi ...
S'il y avait eu une petite temporisation entre chaque "envoi", "retour", ou comme une "indisponibilité" du formulaire entre chaque envoi, il se serait lassé avant ...

Dans l'attente,
en vous remerciant.

Réponses

  • znkznk Member
    T'es chez quel hebergeur ? T'as un serveur SMTP perso ?
    J'ai entendu parler d'une option pour limiter le quota de mail max par ip et par session de 15 min chez certains hebergeurs.
    Ou aussi on peut bidouiller la fonction mail () mais la je laisse les autres dire si c'est possible.

    Et est-ce que t'as un systeme de membre ou meme un anonyme peut te mail ?
  • DanDan Member
    octobre 2010 modifié
    Merci de ta réponse.
    Je suis chez free, pas de BDD, pas de serveur perso

    Je viens de trouver ce bout de script, peut être la solution, je teste dés que possible.
    Ce n'est pas une temporisation, mais un nombre d'envoi par formulaire mail maximum possible par session (ici réglé à 3).


    source : http://forum.alsacreations.com/topic-20-50497-1-Resolu-Comment-empecher-les-mefaits-du-bouton-actualiser.html

    SOURCE
    "je suppose que la page en question est un formulaire de contact (envoi d'email).
    Ce que je te propose c'est, par exemple, de limiter l'envoi à 3 email par personne.
    Dans ta page, avant de faire quoi que ce soit, tu auras donc ceci :"
    session_start(); 
     
    // on vérifie si le compteur existe, et si le formulaire a déjà été envoyé 3 fois. 
    if(isset($_SESSION['compteur_soumissions']) && $_SESSION['compteur_soumissions']>=3)  
         unset($_POST); // on vide les données post, la page s'affiche comme lors du premier acces. On peut aussi afficher une erreur 
     
    // on vérifie que tous les champs soient remplis 
    if(isset($_POST['nom']) && isset($_POST['email']) && isset($_POST['message'])){ 
     
         // ON ENVOIE LE MAIL 
         // ON INCREMENTE LE COMPTEUR D'ENVOIS REALISES SI LE MAIL A ETE ENVOYE 
         if(isset($_SESSION['compteur_soumissions']) $_SESSION['compteur_soumissions']++; 
         else $_SESSION['compteur_soumissions'] = 1; 
    }elseif(isset($_POST['nom']) || isset($_POST['email']) || isset($_POST['message'])){ 
         // MESSAGE D'ERREUR => AU MOINS UN DES CHAMPS N'EST PAS REMPLI 
    }
    
  • DanDan Member
    Bon ... ça ne marche pas, une erreur sur cette ligne ?!...
    if(isset($_SESSION['compteur_soumissions']) $_SESSION['compteur_soumissions']++;
    
  • DanDan Member
    octobre 2010 modifié
    Personne n'a une petite idée pour cette modif sur les formulaires ?
    Juste une sorte de temporisation qui évite l'envoi "frénétique" des données par le bouton actualiser ou envoyer (clicks multiples)

    Merci à tous pour ce super cms et toutes ces infos qui permettent d'apprendre.
Connectez-vous ou Inscrivez-vous pour répondre.