Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 14-05-2008 17:56:05

BenFett
Nouveau membre
Lieu: Paris
Date d'inscription: 11-04-2008
Messages: 8
Site web

Formulaire inscription + captcha

Bonjour à tous,

Voilà, je développe un formulaire d'inscription avec Zend_Form et je souhaitais intégrer des captcha.

J'ai donc mis mon captcha dans un Zend_Form_Element_Image. Pas de problème, le captcha apparaissait.
Seulement, le Zend_Form_Element_Image est en fait une validation du formulaire, donc lorsque l'on cliquait sur mon captcha, ça envoyait le formulaire. Pas terrible pour éviter les inscriptions automatisées ^^

Etant plutôt perséverant, ça ne m'a pas arreté. J'ai donc déplacé le captcha et la zone de saisi du code correspondant au captcha, je l'ai mis en dur dans ma page html. Du coup, j'avais la grosse partie du form en Zend_Form et l'autre en PHP classique. Bon déjà c'est bof bof, mais le problème vient du fait que à cause de ca, je n'ai pas mon code du captcha saisi dans la variable $_POST.

Mes questions :
Est-il possible d'insérer une simple image dans un formulaire avec Zend_Form ? Insérer dans le sens qu'elle apparaisse "au milieu" du formulaire, et non tout en haut ou tout en bas, et pas une image de validation de formulaire.

Sinon, est-il possible d'insérer un Zend_Form_Element après un id spécifiée (insérer l'élément après un id de la page html) ?

Sinon, comment fusionner correctement un "sous-formulaire" Zend_Form (oO) avec un autre sous-formulaire HTML ? Comment récupérer les données avec PHP du formulaire HTML ?

Sinon, que me suggérer vous pour placer un captcha dans mon formulaire ?

S'il n'y a pas de solution, bah je repasserais par la méthode classique ~.~
Mais bon, ça roxe le Zend_Form alors....

Merci d'avance à tous ceux qui essayeront ou arriveront à m'éclaircir sur mon problème.

N'hésitez pas à me poser des questions si je n'ai pas été assez clair. N'hésitez pas à me demander des bouts de code pour mieux illuster ma difficulté.

BenFett

Dernière modification par BenFett (14-05-2008 17:56:36)

Hors ligne

 

#2 14-05-2008 19:14:39

chandler
Nouveau membre
Date d'inscription: 13-02-2008
Messages: 1

Re: Formulaire inscription + captcha

salut,
pour ma part j'utilise disponible ci-dessous:
http://www.phpcs.com/codes/CAPTCHA-VISUELLE_42607.aspx
en l'utilisant comme une image elle me génère une image captcha utilisable dans une de mes Form.
avec un petit champ pour la recopie
$captchafield = new Zend_Form_Element_Text('captchaResult',
  array('label' => 'Veuillez recopier le code affiche :', 'size' => '10'));
$captchafield->setRequired(true)
  ->addValidator('NotEmpty');
et l'img dont la source est directement ma classe.
$captcha = new Zend_Form_Element_Image('captcha');
$captcha->setValue($options['captchasrc']);
ici $options['captchasrc'] = ROOT_URL.'/public/images/Captcha.php'
et le résultat:
<input id="captcha" type="image" src="http://xxx/public/images/Captcha.php" name="captcha"/>
visuellement on obtient:
http://www.phpcs.com/gdi/c/42607.cs.jpg

Hors ligne

 

#3 19-05-2008 14:22:14

BenFett
Nouveau membre
Lieu: Paris
Date d'inscription: 11-04-2008
Messages: 8
Site web

Re: Formulaire inscription + captcha

Hey,

Merci pour ta réponse !

En ce qui concerne le script de génération de captcha, bah j'en ai crée un moi-même, c'est un mix entre celui-là (qui est effectivement très bien), celui de cryptographp et mes idées. Je le mettrais un de ces quatre sur Code-Source je pense.

J'ai donc adapté ton code à mon formulaire, et le captcha s'affiche, seulement, un clic sur le captcha permet d'envoyer le formulaire.

La classe Zend_Form_Element_Image possède une méthode isChecked, qui permet de savoir si l'image entraine la soumission du form (renvoie un booléen). Mais je n'ai pas trouvé une méthode du genre : setChecked, qui permettrait d'empecher à l'image l'envoi du formulaire. Merci de m'éclairer, si quelqu'un connait l'asctuce, la fonction....

La méthode setValue que tu utilises ne m'affiche pas l'image. Bizarre....


Voici mon code :

Code:

// [...] (Début formulaire)

// Affiche le captcha correctement mais entraine l'envoi du form si clic dessus.
$imgCaptcha = new Zend_Form_Element_Image('captcha');
$imgCaptcha->src = '/utilisateur/generercaptcha';   // Pas terrible, mais setValue ne marche pas chez moi (??)

$saisieCodeCaptcha = new Zend_Form_Element_Text('code_captcha');
$saisieCodeCaptcha->setLabel('Code du captcha :')
                ->setRequired(false)
                ->setAutoInsertNotEmptyValidator(false)
                ->setValue('');
        
// [...] (Validator captcha et Fin formulaire)

Hors ligne

 

#4 19-05-2008 14:28:16

stf
Membre
Date d'inscription: 03-04-2008
Messages: 156

Re: Formulaire inscription + captcha

Pour les captcha j'ai entendu parler de Zfe(Zend Framework extend), qui propose une classe  pour faire des captcha

Ah ba tiens, un post là dessus est sur ce forum smile

Dernière modification par stf (19-05-2008 14:28:35)

Hors ligne

 

#5 19-05-2008 15:41:37

ichevc02
Membre
Date d'inscription: 25-07-2007
Messages: 127

Re: Formulaire inscription + captcha

Pour info :
j'utilise la classe captcha du zfe, ca marche tres bien !
(par contre il faut récupérer la dernière version sur le svn).

Dernière modification par ichevc02 (19-05-2008 15:42:10)

Hors ligne

 

#6 19-05-2008 15:51:45

BenFett
Nouveau membre
Lieu: Paris
Date d'inscription: 11-04-2008
Messages: 8
Site web

Re: Formulaire inscription + captcha

En fait ce n'est pas mon script de génération de captcha qui ne fonctionne pas, mais c'est que je ne parviens pas à ajouter une simple image à un formulaire avec Zend. La classe Zend_Form_Element_Image ajoute effectivement une image, mais elle soumet le formulaire (balise <input type="image" />). Moi je voudrais ajouter une simple image qui n'envoie pas le formulaire (balise <img />).

Merci à tous.

Hors ligne

 

#7 19-05-2008 16:03:41

BenFett
Nouveau membre
Lieu: Paris
Date d'inscription: 11-04-2008
Messages: 8
Site web

Re: Formulaire inscription + captcha

chandler a écrit:

Code:

$captcha = new Zend_Form_Element_Image('captcha');
$captcha->setValue($options['captchasrc']);
ici $options['captchasrc'] = ROOT_URL.'/public/images/Captcha.php'

Pour donner une valeur à l'attribut src de l'image, il ne faut pas utiliser la méthode setValue
mais plutôt setImage (setValue ne modifie pas l'attribut src de l'image)

Code:

$captcha = new Zend_Form_Element_Image('captcha');
//$imgCaptcha->setValue('/mycontroller/generercaptcha');    // Fonctionne PAS
$captcha->setImage('/mycontroller/generercaptcha');         // Fonctionne OK

Dernière modification par BenFett (19-05-2008 16:05:45)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages