Anti bot via une question


landry
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 3 Mai 2006

Anti bot via une question

Message le Mer Fév 23, 2011 14:28

Bonjour,

J'ai sur une page de formulaire d'inscription plusieurs données sont à renseigner(email, nom, url, ect).
Lorsque la personne a fini de remplir le formulaire elle clique sur le bonton "envoyer", les infos sont vérifiées (je ne sais pas comment car je suis une bille en script) puis si elles sont OK le formulaire m'est envoyé.
Certains robots passent au travers du captcha présent alors je voudrai ajouter une question qui serait vérifiée au même moment que le reste des champs remplis.
Je ne souhaite pas de question où un chiffre est demandé, je pense que les robots les essayent tous. Je voudrai une question plus précise comme par exemple:
Quel animal miaule ?

Sur le fichier.php ça donne ça :

Code: Tout sélectionner
<tr>
<td class="text_before_field_add_annuaire" nowrap>Quel animal miaule ? : le <input type="text" name="question" maxlength=5 size=5><span class="n"> miaule.</span>
</td>
  </tr>


C'est le scrip de vérification que je ne sais pas faire.
Ce site dispose d'un fichier functions.php et je peux donner ici tout le script du fichier submit.php si besoin est.

Merci


Zecat
WRInaute accro
WRInaute accro
 
Messages: 11990
Inscription: 1 Mar 2005

Re: Anti bot via une question

Message le Mer Fév 23, 2011 15:03

le principe :

ton submit lance poster_le_form.php

la tu fait par exemple un include de poster_le-form_verif.php : il verifie le contenu des champs reçus et si erreur tu positionnes une var $error=1 et $errorlib="Mauvais reponse, recommencez"

Puis dans poster_le_form tu poursuis :

- si error, tu l'affiches et via header tu renvoies le mec au form (pense a sauver le contenu des champs qu'il ai pas tout a resaisir)

- si pas error, tu poursuis en stockant les infos saisies

voila un principe ...


Booble
WRInaute discret
WRInaute discret
 
Messages: 130
Inscription: 18 Sep 2006

Re: Anti bot via une question

Message le Mer Fév 23, 2011 15:15

je crois que j'ai trouvé la réponse : un chat ?


landry
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 3 Mai 2006

Re: Anti bot via une question

Message le Mer Fév 23, 2011 15:25

ton submit lance poster_le_form.php

la tu fait par exemple un include de poster_le-form_verif.php : il verifie le contenu des champs reçus et si erreur tu positionnes une var $error=1 et $errorlib="Mauvais reponse, recommencez"

Puis dans poster_le_form tu poursuis :

- si error, tu l'affiches et via header tu renvoies le mec au form (pense a sauver le contenu des champs qu'il ai pas tout a resaisir)

- si pas error, tu poursuis en stockant les infos saisies


Pour toi ça doit être un jeu d'enfant mais pour c'est de l'hebreu.
J'aurai préféré un script complet car je suis nul en codage. Je ne sais même pas par où commencer.

J'ai pas fait <?php ?> en deuxième langue mais maintenant je le regrette. :)

je crois que j'ai trouvé la réponse : un chat ?

Bien Booble, je te déclare officielement comme étant un humain. :wink:


landry
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 3 Mai 2006

Re: Anti bot via une question

Message le Mer Fév 23, 2011 19:10

Alors voilà ce que j'ai fait :



Code: Tout sélectionner
$action = isset($_POST['action']) ? $_POST['action'] : '';
if ($action == "submit")
$question = isset($_POST['question']) ?  strip_tags ($_POST['question']) : '';
est_vide($question,"Vous n'avez pas rempli le nom de l'animal qui miaule",true);


Et dans le texte :

Code: Tout sélectionner
             <td align=center valign=bottom class="text_before_field_add_annuaire" nowrap>
           <br><br>
           Au fait, quel est l'animal qui miaule ? :&nbsp; le <input type="text" name="question" maxlength=5 size=5><span class="n"> miaule.</span>
            </td>


Si le champs n'est pas rempli, le formulaire affiche une erreur. En ravanche si je lui dit que c'est un chien qui miaule le formulaire est entièrement d'accord. :lol:
C'est normal, je n'ai pas précisé que la bonne réponse est "chat" mais comment on fait pour obliger cette réponse ?


landry
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 3 Mai 2006

Re: Anti bot via une question

Message le Jeu Fév 24, 2011 11:17

J'ai essayé ça pour vérifier :

Code: Tout sélectionner
function est_faux ($question,$inc = false)
//verifie la réponse à la question + non vide
{
   global $PMA_infos;
   $message = "";
   
   if (empty($question) || $question == "chat")
      $message .= "Votre réponse au nom de l'animal qui miaule ne peut être vide !";
   else //on doit verifier la réponse
   {
            //on verifie si la réponse est bonne
      if($_POST["question"] = "chat");
      $message .= "Le nom de l'animal qui miaule est faux !";
   }
      
   //si on a un message d'erreur il faut quitter
   if ($message)
   {
      $message .= "<br><br>\n";
      $message .= "<a href=\"javascript:history.go(-1);\">Retour au formulaire</a>\n";
      echo "<CENTER>$message</CENTER>";
      if ($inc)
         include("after.php");
      exit;
   }
   else
   { return true; } //on rend vrai car si c'est pas bon on a quitte avant    
}


Ca doit être bourré d'erreur, je n'y connais rien je fais par déduction, c'est pour cela que je demande votre aide d'ailleurs.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité