Anti bot via une question

WRInaute discret
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:
<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
 
WRInaute accro
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 ...
 
WRInaute discret
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:
 
WRInaute discret
Alors voilà ce que j'ai fait :



Code:
$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:
             <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 ?
 
WRInaute discret
J'ai essayé ça pour vérifier :

Code:
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.
 
Discussions similaires
Haut