J'aimerais protège mon formulaire de contact contre le spam avec une question simple.
Premièrement j'ai déjà ajouter un champ invisible 'email-1' dans le formulaire, si cette champ est remplis par un robot le formulaire n'est s'envoie pas.
Déjà, mets tout en minuscule, cale t'évitera ton :
$NON = array ('non','NON','Non','nON','nee','NEE','Nee','nEE');
en mettant :
$NON = array ('non','nee');
Ensuite, il y a des exemples sur les page que je t'ai donné, à toi d'essayer.
Merci de ta réponse mais je n'arrive pas a résoudre cette problème.
Si j'utilise le function
if(isset($_POST['norobot']) && $_POST['norobot'] == 'non')
Je met dans le champ "norobot" la réponse 'non' et le formulair est envoyé.
Si je marque 'NON', ça marche pas parce que la réponse doivent être 'non'.
Pourquoi je ne peux pas remplacer la réponse souhaité =='non' par un variable ==$NON (par example) qui compare la réponse avec les différentes mots possibles stocké dans l'array $NON.
Je ne suis pas une expert donc j'arrive pas a trouver la logique avec les 2 liens que tu m'envoyé car je ne sait pas comment configurer mon variable en strtolower et je prefer de faire ceci le plus simplement (pour moi) possible.
Je déjà essayé une autre solution qui marche mais pas super car je reçois environs 40 messages par jour (au lieu de 100) mais que avec un adresse mail et sans text. Si j'envoie un message à moi-même ça marche bien.
if(isset($_COOKIE['mailform'])) { $show = true; echo 'Vous avez déjà envoyer un message anterieurement. Pour des raisons de securité nous sommes obligé de vous faire attendre '.$spam.' secondes!'; }
else {
if(strlen($_POST['nom']) < 2) {$error .= "- Vous avez oublié votre Nom! <BR />"; $count++; } if(strlen($_POST['email']) < 6 || preg_match('~^(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?=\D*\d)(?=[A-Za-z0-9]*[^A-Za-z0-9])\S{6,}$~', $_POST['email'])) {$error .= "- Votre adresse mail n'est pas valide! <BR />"; $count++; } if (strlen($_POST['text']) < 1 ) {$error .= "- Vous avez oublié d´ecrire un message <BR />"; $count++; } if (!empty($error)) // If any errors {echo ($count == 1) ? 'L´erreur suivant est detecté <BR />' : 'Les erreurs suivantes sont detectés <BR />'; //Check if 1 ormore errors. echo "".$error."<BR />"; }
// Check No Robot if(strlen($_POST['email-1']) >= 1 ) {echo "<script>location.href='http://www.monsite.fr/index.php?page=accueil#merci';</script>"; } if (strlen($_POST['norobot']) >=4 ) //Make believe message came through {echo "<script>location.href='http://www.monsite.fr/index.php?page=accueil#merci';</script>"; }
if(isset($_COOKIE['mailform'])) { $show = true; echo 'Vous avez déjà envoyer un message anterieurement. Pour des raisons de securité nous sommes obligé de vous faire attendre '.$spam.' secondes!'; }
else {
if(strlen($_POST['nom']) < 2) {$error .= "- Vous avez oublié votre Nom! <BR />"; $count++; } if(strlen($_POST['email']) < 6 || preg_match('~^(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?=\D*\d)(?=[A-Za-z0-9]*[^A-Za-z0-9])\S{6,}$~', $_POST['email'])) {$error .= "- Votre adresse mail n'est pas valide! <BR />"; $count++; } if (strlen($_POST['text']) < 1 ) {$error .= "- Vous avez oublié d´ecrire un message <BR />"; $count++; } if (!empty($error)) // If any errors {echo ($count == 1) ? 'L´erreur suivant est detecté <BR />' : 'Les erreurs suivantes sont detectés <BR />'; //Check if 1 ormore errors. echo "".$error."<BR />"; } if(strlen($_POST['email-1']) >= 1 ) {echo "<script>location.href='index.php?page=accueil#youarearobot';</script>"; } if (strlen($_POST['norobot']) >=4 ) {echo "<script>location.href='index.php?page=accueil#youarearobot';</script>"; }
else { // Check No Robot if(... in_array(strtolower($_POST['norobot']), $NON))
Ne marche toujours pas si je tap 'oui' ou 'non' le message est envoyé.
Sauf avec 'oui' le message s'envoie en text brut avec les codes html visible, et avec 'non' en html propre.
J'ai déjà reçu 40 message de spam avec que des adresse mail mais pas de text. J'ai voulu poster mon mailform ce matin mais ceci est effacer par le moderateur ???