Bonjour,
je développe un module sous zend et j'aimerai mettre en place un captcha à mon formulaire, par contre je n'ai aucune idée sur le manière de procéder,
si quelqu'un peut bien me guider , merci d'avance.
Bonjour,
je développe un module sous zend et j'aimerai mettre en place un captcha à mon formulaire, par contre je n'ai aucune idée sur le manière de procéder,
si quelqu'un peut bien me guider , merci d'avance.
Je viens de trouver un tuto qui parle de ca:http://khayyam.developpez.com/articl...work/captchas/
Mais ce n'est pas toujours réglé, j'aurai besoin de l'aide tout de même.
La documentation de zend sur ce composant explique pourtant bien comment procéder, as tu regarder cette documentation
Bonjour,
j'ai bien suivi le tuto mais j'ai le message d'erreur suivant qui s'affiche :
j'ai accédé aux dossiers indiqués mais je ne vois vraiment pas le problème des images.Warning: imageftbbox() [function.imageftbbox]: Invalid font filename in D:\workspace\thermidor\library\php\Zend\Captcha\Image.php on line 489
Warning: imagefttext() [function.imagefttext]: Invalid font filename in D:\workspace\thermidor\library\php\Zend\Captcha\Image.php on line 492
Warning: imagepng() [function.imagepng]: Unable to open 'out/6bf44e6d9019b63b0073a6acb4de5111.png' for writing: No such file or directory in D:\workspace\thermidor\library\php\Zend\Captcha\Image.php on line 563
merci pour votre aide.
J'ai utilisé une autre solution qui est comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <? require_once 'Zend/Form.php'; require_once 'Zend/View.php'; $form = new Zend_Form(); $view = new Zend_View(); $form->setView($view); $form->addElement('captcha', 'captcha', array( 'label' => 'Please enter the 5 letters displayed below:', 'required' => true, 'captcha' => array( 'captcha' => 'Figlet', 'wordLen' => 5, 'timeout' => 300 ) )); echo $form->__toString(); $form->addElement($captcha); } ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <form enctype="application/x-www-form-urlencoded" action="" method="post"><dl class="zend_form"> <dt id="captcha-label"><label for="captcha-input" class="required">Please enter the 5 letters displayed below:</label></dt> <dd> <pre> _ _ ______ _ __ ______ __ __ | | | || /_ _// | |/ // /_ _// \ \\ / // | |/\| || -| ||- | ' // -| ||- \ \/ // | /\ || _| ||_ | . \\ _| ||_ \ // |_// \_|| /_____// |_|\_\\ /_____// \// `-` `-` `-----` `-` --` `-----` ` </pre> <input type="hidden" name="captcha[id]" value="ed23885c3b9c6963a1d7534be3655bed" id="captcha-id"> <input type="text" name="captcha[input]" id="captcha-input" value=""></dd></dl></form>
MON PROBLÈME c que je ne sais pas comment contrôler la saisie du captcha afin de valider le formulaire après cette saisie.
merci de m'aider.
Affiche nous les lignes du fichier qui sont indiquées dans ton erreur.
Il semblerait aussi que tu aie des problème de droit
Bonjour,
un moyen de vérifier si la saisie de ton captcha est correcte c'est de faire le test:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if ($form->isValid($_POST){ // saisie ok } else { //mauvaise saisie => affichage d'un message d'erreur! }
Comme je suis bloqué, j'ai essayé une autre classe comme suit dans le controleur:
le message d'erreur qui s'affiche est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 $captcha = new Zend_Form_Element_Captcha('captcha', array( 'label' => "Merci de confirmer que vous êtes humain :", 'captcha' => array( 'captcha' => 'Image', 'imgDir' => './captcha/', 'imgUrl' => Zend_Controller_Front::getInstance()->getBaseUrl() .'/captcha/', 'wordLen' => 6, 'fsize' => 40, 'height' => 50, 'width' => 200, 'gcFreq' => 10, 'expiration' => 300, 'dotNoiseLevel' => 5, 'lineNoiseLevel' => 5, 'font' => './fonts/arial.ttf' ), )); $captcha->setDecorators(array( 'Label', array('HTMLTag', array('tag'=>'p')) )); echo $captcha;
merci pour votre aide, avec toute la doc sur le net, je n'arrive pas à m'ensortir.Warning: imageftbbox() [function.imageftbbox]: Invalid font filename in D:\workspace\thermidor\library\php\Zend\Captcha\Image.php on line 489
Warning: imagefttext() [function.imagefttext]: Invalid font filename in D:\workspace\thermidor\library\php\Zend\Captcha\Image.php on line 492
Warning: imagepng() [function.imagepng]: Unable to open './captcha/bcd05ef5a6ce1c5f86fb77d86613147e.png' for writing: No such file or directory in D:\workspace\thermidor\library\php\Zend\Captcha\Image.php on line 563
Merci de confirmer que vous êtes humain :
en fait J'ai modifié un peu le code, les messages d'erreurs ne s'affiche plus par contre l'image ne s'affiche pas:
ce que j'ai fait est comme suit:
le résultat est les suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 $captcha = new Zend_Form_Element_Captcha('captcha', array( 'label' => "Merci de confirmer que vous êtes humain :", 'captcha' => array( 'captcha' => 'Image', 'imgDir' => PUBLIC_PATH.'/images/captcha/', 'imgUrl' => Zend_Controller_Front::getInstance()->getBaseUrl() .'/captcha/', 'wordLen' => 6, 'fsize' => 40, 'height' => 50, 'width' => 200, 'gcFreq' => 10, 'expiration' => 300, 'dotNoiseLevel' => 5, 'lineNoiseLevel' => 5, 'font' => MEDIA_PATH.'/arial.ttf' ), )); $captcha->setDecorators(array( 'Label', array('HTMLTag', array('tag'=>'p')) )); echo $captcha;
On voit bien à partir de ce source que l'image est bien récupérée par contre elle ne s'affiche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <p><label for="captcha-input" class="required">Merci de confirmer que vous êtes humain :</label> <img width="200" height="50" alt="" src="/captcha/ecbc7252768ca8da29e0ad7bb952e14d.png" /> <input type="hidden" name="captcha[id]" value="ecbc7252768ca8da29e0ad7bb952e14d" id="captcha-id" /> <input type="text" name="captcha[input]" id="captcha-input" value="" /></p>
j'ai juste le message de confirmation et le champx de saisie.
Tu es sur que le lien vers l'image est correcte ? Car là ça à l'air d'être ton problème
Oui c'est mon probleme, je n'arrive pas à récupérer l'url du dossier captcha meme si j'ai faitqui me rend le chemin suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part PUBLIC_PATH.'\images\captcha'
les images s'enregistre bien dans le dossier captcha de ce répertoire.D:\workspace\thermidor\public\images\captcha
C'est ce que j'ai utilisé au débu sans résultat comme suit
Code : Sélectionner tout - Visualiser dans une fenêtre à part 'imgUrl' => Zend_Controller_Front::getInstance()->getBaseUrl() .'/captcha/',
Bonjour,
une question comme ça par hasard: as-tu téléchargé le fichier "font": arial.ttf. Si oui le chemin que tu précises est-il correcte?
'font' => MEDIA_PATH.'/arial.ttf'
Ce que je ne comprend pas c'est qu'en affichant le source, le chemin de l'image est correcte, je n'arrive pas à voir pourquoi elle ne s'affiche pas.
le source est comme:
le source de l'image est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <p><label for="captcha-input" class="required">Merci de confirmer que vous êtes humain :</label> <img width="200" height="50" alt="" src="D:\workspace\thermidor\public\images\captcha/c27e7f8c67c4f411558e4096b67ef71a.png" /> <input type="hidden" name="captcha[id]" value="c27e7f8c67c4f411558e4096b67ef71a" id="captcha-id" /> <input type="text" name="captcha[input]" id="captcha-input" value="" /></p>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2src="D:\workspace\thermidor\public\images\captcha/c27e7f8c67c4f411558e4096b67ef71a.png"
pour répondre a ta question le font je l'ai copié à partir du dossier Windows et je l'ai mis dans le répertoire media comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2D:\workspace\thermidor\public\media\arial.ttf
pour tester mets le même lien pour "imgDir" et" imgUrl":
'imgDir' => PUBLIC_PATH.'/images/captcha/',
'imgUrl' => Zend_Controller_Front::getInstance()->getBaseUrl() .'/captcha/',
BONJOUR,
j'ai testé ce que tu m'as dit, voici le message d'erreur qui est affiché:
Warning: imagepng() [function.imagepng]: Unable to open '/captcha/3b28c7c2737c0a531a4d5268a8feaca9.png' for writing: No such file or directory in D:\workspace\thermidor\library\php\Zend\Captcha\Image.php on line 563
si je metssi je mets
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 'imgDir' => Zend_Controller_Front::getInstance()->getBaseUrl() .'/captcha/', 'imgUrl' => Zend_Controller_Front::getInstance()->getBaseUrl() .'/captcha/',pas de message d'erreur mais l'image ne s'affiche pas, y a juste le label et le champ text qui s'affiche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'imgDir' => PUBLIC_PATH.'\images\captcha', 'imgUrl' => PUBLIC_PATH.'\images\captcha',
Je me pose une autre question
comment tester la valeur du captcha saisie, cat j'ai fait un auttre avecmais lorsque je saisi les mauvais caractères le formulaire est validé et ma candidature est insérée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $element = new Zend_Form_Element_Captcha('foo', array( 'label' => "Merci de confirmer que vous êtes humain", 'captcha' => 'Figlet', 'captchaOptions' => array( 'captcha' => 'Figlet', 'wordLen' => 6, 'timeout' => 300, ), )); echo $element;
merci pour vos réponses.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager