Création d'une confirmation visuelle dans un formulaire

Mammouth du PHP | 2937 Messages

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.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

07 mars 2006, 17:43

Comme un message d'erreur, mais quand il n'y a pas d'erreur ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 2937 Messages

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.

Mammouth du PHP | 768 Messages

07 mars 2006, 17:50

tu veux sans doute parler du CAPTCHA
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Mammouth du PHP | 2937 Messages

07 mars 2006, 17:52

Salut!

Oui, c'est ça. :)

Mammouth du PHP | 768 Messages

07 mars 2006, 18:03

Tu recherches une solution toute faite ou tu souhaites le faire toi même ?
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Mammouth du PHP | 2937 Messages

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:

Mammouth du PHP | 768 Messages

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:
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Mammouth du PHP | 2937 Messages

07 mars 2006, 18:19

Salut!

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

Mammouth du PHP | 2937 Messages

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>