Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Form
Zend_Form Forum d'entraide pour le composant Zend_Form du Zend Framework (création de formulaires, helpers, AJAX etc.). Avant de poster -> FAQ Zend_Form.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/08/2011, 14h19   #1
Membre à l'essai
 
Femme
Développeur Web Junior
Inscription : novembre 2009
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web Junior

Informations forums :
Inscription : novembre 2009
Messages : 124
Points : 22
Points : 22
Par défaut mise en place d'un captcha

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.
nassing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 14h27   #2
Membre à l'essai
 
Femme
Développeur Web Junior
Inscription : novembre 2009
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web Junior

Informations forums :
Inscription : novembre 2009
Messages : 124
Points : 22
Points : 22
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.
nassing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 14h45   #3
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
La documentation de zend sur ce composant explique pourtant bien comment procéder, as tu regarder cette documentation
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 09h55   #4
Membre à l'essai
 
Femme
Développeur Web Junior
Inscription : novembre 2009
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web Junior

Informations forums :
Inscription : novembre 2009
Messages : 124
Points : 22
Points : 22
Bonjour,
j'ai bien suivi le tuto mais j'ai le message d'erreur suivant qui s'affiche :

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
j'ai accédé aux dossiers indiqués mais je ne vois vraiment pas le problème des images.
merci pour votre aide.
nassing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 10h24   #5
Membre à l'essai
 
Femme
Développeur Web Junior
Inscription : novembre 2009
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web Junior

Informations forums :
Inscription : novembre 2009
Messages : 124
Points : 22
Points : 22
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.
nassing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 13h19   #6
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Affiche nous les lignes du fichier qui sont indiquées dans ton erreur.

Il semblerait aussi que tu aie des problème de droit
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 13h23   #7
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
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!
}
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 14h39   #8
Membre à l'essai
 
Femme
Développeur Web Junior
Inscription : novembre 2009
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web Junior

Informations forums :
Inscription : novembre 2009
Messages : 124
Points : 22
Points : 22
Comme je suis bloqué, j'ai essayé une autre classe comme suit dans le controleur:
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;
le message d'erreur qui s'affiche est le suivant:
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 :
merci pour votre aide, avec toute la doc sur le net, je n'arrive pas à m'ensortir.
nassing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 15h16   #9
Membre à l'essai
 
Femme
Développeur Web Junior
Inscription : novembre 2009
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web Junior

Informations forums :
Inscription : novembre 2009
Messages : 124
Points : 22
Points : 22
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:
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;
le résultat est les suivant:
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>
On voit bien à partir de ce source que l'image est bien récupérée par contre elle ne s'affiche pas.
j'ai juste le message de confirmation et le champx de saisie.
nassing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 16h21   #10
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Tu es sur que le lien vers l'image est correcte ? Car là ça à l'air d'être ton problème
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 16h57   #11
Membre à l'essai
 
Femme
Développeur Web Junior
Inscription : novembre 2009
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web Junior

Informations forums :
Inscription : novembre 2009
Messages : 124
Points : 22
Points : 22
Oui c'est mon probleme, je n'arrive pas à récupérer l'url du dossier captcha meme si j'ai fait
Code :
PUBLIC_PATH.'\images\captcha'
qui me rend le chemin suivant:
Citation:
D:\workspace\thermidor\public\images\captcha
les images s'enregistre bien dans le dossier captcha de ce répertoire.
nassing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 19h49   #12
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Travail avec baseUrl
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 20h14   #13
Membre à l'essai
 
Femme
Développeur Web Junior
Inscription : novembre 2009
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web Junior

Informations forums :
Inscription : novembre 2009
Messages : 124
Points : 22
Points : 22
C'est ce que j'ai utilisé au débu sans résultat comme suit
Code :
'imgUrl'	=> Zend_Controller_Front::getInstance()->getBaseUrl() .'/captcha/',
nassing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 09h04   #14
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
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'
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 09h13   #15
Membre à l'essai
 
Femme
Développeur Web Junior
Inscription : novembre 2009
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web Junior

Informations forums :
Inscription : novembre 2009
Messages : 124
Points : 22
Points : 22
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:
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>
le source de l'image est :
Code :
1
2
 
 src="D:\workspace\thermidor\public\images\captcha/c27e7f8c67c4f411558e4096b67ef71a.png"
nassing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 09h15   #16
Membre à l'essai
 
Femme
Développeur Web Junior
Inscription : novembre 2009
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web Junior

Informations forums :
Inscription : novembre 2009
Messages : 124
Points : 22
Points : 22
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
2
 
D:\workspace\thermidor\public\media\arial.ttf
nassing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 09h40   #17
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
pour tester mets le même lien pour "imgDir" et" imgUrl":
Citation:
'imgDir' => PUBLIC_PATH.'/images/captcha/',
'imgUrl' => Zend_Controller_Front::getInstance()->getBaseUrl() .'/captcha/',
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 09h51   #18
Membre à l'essai
 
Femme
Développeur Web Junior
Inscription : novembre 2009
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web Junior

Informations forums :
Inscription : novembre 2009
Messages : 124
Points : 22
Points : 22
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
nassing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 09h53   #19
Membre à l'essai
 
Femme
Développeur Web Junior
Inscription : novembre 2009
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web Junior

Informations forums :
Inscription : novembre 2009
Messages : 124
Points : 22
Points : 22
si je mets
Code :
1
2
3
 
'imgDir'	      			=> Zend_Controller_Front::getInstance()->getBaseUrl() .'/captcha/',
	            'imgUrl'	      			=> Zend_Controller_Front::getInstance()->getBaseUrl() .'/captcha/',
si je mets
Code :
1
2
'imgDir'	      			=> PUBLIC_PATH.'\images\captcha',
	            'imgUrl'	      			=> PUBLIC_PATH.'\images\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.
nassing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 10h35   #20
Membre à l'essai
 
Femme
Développeur Web Junior
Inscription : novembre 2009
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web Junior

Informations forums :
Inscription : novembre 2009
Messages : 124
Points : 22
Points : 22
Je me pose une autre question
comment tester la valeur du captcha saisie, cat j'ai fait un auttre avec
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;
mais lorsque je saisi les mauvais caractères le formulaire est validé et ma candidature est insérée.
merci pour vos réponses.
nassing est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h38.


 
 
 
 
Partenaires

Hébergement Web