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. :ccool:
Version imprimable
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. :ccool:
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.Citation:
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:
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:
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:
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:
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.Citation:
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:
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:
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:PUBLIC_PATH.'\images\captcha'
les images s'enregistre bien dans le dossier captcha de ce répertoire.Citation:
D:\workspace\thermidor\public\images\captcha
Travail avec baseUrl
C'est ce que j'ai utilisé au débu sans résultat comme suit
Code:'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?
Citation:
'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:
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:
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:
1
2D:\workspace\thermidor\public\media\arial.ttf
pour tester mets le même lien pour "imgDir" et" imgUrl":
Citation:
'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é:
Citation:
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 metsCode:
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:
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:
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.