Création d'une confirmation visuelle dans un formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Création d'une confirmation visuelle dans un formulaire

par Victor BRITO » 08 mars 2006, 17:01

Salut!

J'ai essayé, mais le formulaire ne s'affiche pas: en lieu et place, une page toute blanche, sans message d'erreur. :(

Voici le code de la page image.php:
<?php 
$img=imagecreate(200, 50);
$noir=imagecolorallocate($img, 0, 0, 0);
$blanc=imagecolorallocate($img, 255, 255, 255);
imagefill($img, 0, 0, $noir);
session_start();
$img_alea=$_SESSION["img_alea"];
imagechar($img, 5, 0, 0, $img_alea[0], $blanc);
imagechar($img, 5, 25, 0, $img_alea[1], $blanc);
imagechar($img, 5, 50, 0, $img_alea[2], $blanc);
imagechar($img, 5, 75, 0, $img_alea[3], $blanc);
imagechar($img, 5, 100, 0, $img_alea[4], $blanc);
imagechar($img, 5, 125, 0, $img_alea[5], $blanc);
imagechar($img, 5, 150, 0, $img_alea[6], $blanc);
imagechar($img, 5, 175, 0, $img_alea[7], $blanc);
header("Content-type: image/jpeg");
imagejpeg($img);
?>
Et voici celui de la page index.php (où doit s'afficher le formulaire):
<?php 
session_start();
$img_texte="";
$_SESSION["img_alea"]=$img_texte;
if (!isset($_POST["saisie"])) $saisie=""; else $saisie=$_POST["saisie"];
$caracteres="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
srand((double)microtime()*1000000);
for($i=1; $i<=8; $i++){
	$img_texte.=$caracteres[rand(0, 61)];
}
return $img_texte;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<?php 
if (!isset($_POST["saisie"])){
?>
<form id="form1" name="form1" method="post" action="">
  Veuillez saisir le code<br />
  <img src="image.php?<?php echo SID ?>" /><br />
  <input name="saisie" type="text" id="saisie" />
  <br />
  <input type="submit" name="Submit" value="OK" />
</form>
<?php 
}
else{
	if ($saisie==$img_texte) echo "Bravo&nbsp;! vous n&rsquo;&ecirc;tes pas un robot.";
	else echo "R&eacute;essayez, si vous n&rsquo;&ecirc;tes pas un robot. <a href='index.php'>Retour</a>";
}
session_unset();
session_destroy();
?>
</body>
</html>

par Victor BRITO » 07 mars 2006, 18:19

Salut!

Merci bien. Je m'en vais essayer tout ça.

par mario » 07 mars 2006, 18:14

Re!

J'ai cherché à travers le lien que tu as donné et trouvé des tutoriaux que je garde sous le coude. Mais, si je peux le faire moi-même, c'est encore mieux. :wink:
Le principe est de générer un texte. J'ai une fonction très basique sur mon blog , tu peux t'en inspirer :arrow: LIEN

Une fois le mot de passe généré, le mieux, à mon avis, est de le stocker dans une variable de session :arrow: INFO ICI

Créé un fichier image.php par exemple pour générer le CAPTCHA (texte issu de la variable de session). Tu peux t'inspirer de la doc pour générer simplement un texte :arrow: imageString()

pour appeler le captcha a partir du formulaire, tu insères simplement:
<img src='image.php'/>


Pour la validation du formulaire, tu fais une simple condition (IF) pour comparer ce que le visiteur a tapé avec le texte stocké dans ta variable de session.

J'espère ne pas avoir été brouillon dans mes explications :wink:

par Victor BRITO » 07 mars 2006, 18:05

Re!

J'ai cherché à travers le lien que tu as donné et trouvé des tutoriaux que je garde sous le coude. Mais, si je peux le faire moi-même, c'est encore mieux. :wink:

par mario » 07 mars 2006, 18:03

Tu recherches une solution toute faite ou tu souhaites le faire toi même ?

par Victor BRITO » 07 mars 2006, 17:52

Salut!

Oui, c'est ça. :)

par mario » 07 mars 2006, 17:50

tu veux sans doute parler du CAPTCHA

par Victor BRITO » 07 mars 2006, 17:45

Salut!

Non. Je veux parler de la confirmation visuelle, qui génère une image avec des chiffres et des lettres tordues que le client doit taper avant d'envoyer le formulaire.

par mere-teresa » 07 mars 2006, 17:43

Comme un message d'erreur, mais quand il n'y a pas d'erreur ?

Création d'une confirmation visuelle dans un formulaire

par Victor BRITO » 07 mars 2006, 17:13

Salut à tous!

Pour mon tout premier message sur ce forum, je voudrais savoir comment s'y prendre pour créer une confirmation visuelle, et ce non pas dans un forum phpBB, mais dans un formulaire d'envoi de courriel.