Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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
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:
Hors ligne
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 :
// [...] (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
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
Dernière modification par stf (19-05-2008 14:28:35)
Hors ligne
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
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
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)
$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