IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Form PHP Discussion :

Zend_Form Captcha après 3 essais infructueux [ZF 1.11]


Sujet :

Zend_Form PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Zend_Form Captcha après 3 essais infructueux
    Bonjour à tous,

    voici ma problématique:

    j'ai actuellement une application web développée avec Zend 1.11 et une page de login qui utilise une Zend_Form. Après 3 essais infructueux sur un login existant, j'affiche un captcha. Cependant lorsque je rentre le bon login et le bon mot de passe et quelque soit ce que je rentre dans le champ captcha, j'ai une erreur dans la fonction suivante de Zend :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    library\Zend\Auth.php :
    public function authenticate(Zend_Auth_Adapter_Interface $adapter) {
         $result = $adapter->authenticate(); // erreur dans cette ligne

    Voici le détail de mon formulaire :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    <?php
     
    class Application_Form_Login extends Zend_Form
    {
        private $display_captcha = false;
     
        public function showCaptcha() {
            $this->display_captcha = true;
        }
     
        public function hideCaptcha() {
            $this->display_captcha = false;
        }
     
        public function isCaptchaVisible() {
            return $this->display_captcha;
        }
     
        public function init()
        {
            $htmlpurifier = new Form_Filter_HTMLPurifier();
     
            $this->setAttrib('title', 'Formulaire d\'authentification');
            $this->setAttrib('id','login-form');
     
            $login = new Zend_Form_Element_Text('login');
            $login->setLabel('Login')
                   ->setRequired(true)
                   ->addFilter($htmlpurifier)
                   ->addValidator('NotEmpty', true)
                   ->addValidator('stringLength', false, array(3, 15));
            $login->setOrder(1);
     
            $password = new Zend_Form_Element_Password('password');
            $password->setLabel('Mot de passe')
                  ->setRequired(true)
                  ->addFilter($htmlpurifier)
                  ->addValidator('NotEmpty', true);
            $password->setOrder(2);
     
            $submit = new Zend_Form_Element_Submit('Connexion');
            $submit->setAttrib('id', 'submitbutton')
                   ->setAttrib('class', 'button');
            $submit->setOrder(4);
            $this->addElements(array($login, $password, $submit));
        }
     
        public function build() {
            if($this->isCaptchaVisible()) {
                $captcha = $this->createElement('captcha', 'captcha',
                                array('required' => true,
                                'captcha' => array('captcha' => 'Image',
                                'font' => 'font/a_song_for_jennifer.ttf',
                                'fontSize' => '24',
                                'wordLen' => '6',
                                'height' => '50',
                                'width' => '150',
                                'imgDir' => 'captcha',
                                'imgUrl' => 'captcha',
                                'gcFreq'=>'10',    
                                'dotNoiseLevel' => '10',
                                'lineNoiseLevel' => '2')));
                $captcha->setLabel('Captcha');
                $captcha->setOrder(3);
                $this->addElement($captcha);
            }
        }
    }
    dans mon controller j'incrémente une colonne 'tentatives' à chaque essai manqué sur un utilisateur.

    Après 3 tentatives, j'appelle showCaptcha().

    Avant d'ajouter ma Zend_Form à ma vue, j'appelle systématiquement la métode build().

    Dites moi si vous comprenez bien mon problème...
    Savez vous si je m'y prend bien ?
    Savez-vous ce que je peux faire pour faire fonctionner ce captcha ?

    Merci,
    Bruno

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Je me suis compliqué la vie à vouloir afficher le captcha dynamiquement.
    J'ai heureusement trouvé plus simple.

    Je crée 2 formulaires:
    - un avec captcha
    - l'autre sans captcha

    A chaque tentative infructueuse j'incrémentes un champ 'tentatives' dans la base de données. Quand je suis à 3 tentatives, je redirige systématiquement sur le formulaire avec le captcha. Voilà

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [E-07] Verrification login et password Apres 3 essai fermer programme
    Par dec3003 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/03/2009, 15h20
  2. perriode d'essai apres un CDD?
    Par hansaplast dans le forum Droit du travail
    Réponses: 6
    Dernier message: 07/11/2008, 10h24
  3. Licenciement après période d'essai CNE
    Par eric1970 dans le forum Licenciement
    Réponses: 16
    Dernier message: 28/10/2008, 13h06
  4. Captchas : Quelle maturité dans Zend_Form ?
    Par Yogui dans le forum Zend_Form
    Réponses: 1
    Dernier message: 30/09/2008, 13h17
  5. Redirection après validation d'un captcha
    Par GarGamel55 dans le forum Langage
    Réponses: 4
    Dernier message: 08/09/2006, 20h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo