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 :

Vérification de mot de passe [ZF 1.11]


Sujet :

Zend_Form PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut Vérification de mot de passe
    Salut,
    J'utilise cette méthode pour vérifier que 2 mots de passe sont identiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ->addValidator(new Zend_Validate_Identical('password')
    On va dire que mon 1er champ s'appelle "password" et le 2ème "vérification".

    Mon problème, c'est que je veux que le champ "vérification" ne soit obligatoire que si le champ "password" est rempli.

    Quand je met une valeur que dans "password", le formulaire s'envoie quand même, et si je mets un ->setRequired(true) sur le champ "vérification", ça ne marche pas dans le cas où le champ "password" n'est pas rempli.

    Auriez-vous une solution à ce problème ?

  2. #2
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Bonjour,
    La solution est de créer ton propre validateur, tu n'auras donc plus ce soucis

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Il n'y a vraiment aucun moyen de passer par ce validateur ? Il est mal fait donc, car il ne vérifie pas si les 2 chaines sont identiques dans tous les cas !

  4. #4
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Il fonctionne très bien mais pas dans ton cas, tous simplement.

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Peut-être que je me suis mal exprimé alors.

    En faite, je veux qu'il compare les 2 champs (ce que devrait faire le validateur si j'ai bien compris son utilité).
    Si les 2 champs sont vides, ils sont identiques, donc aucun problème.
    Par contre si un seul des 2 champs n'est pas rempli, ils ne sont pas identiques (ce qui me parait logique) et je veux qu'il m'empêche de valider le formulaire.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    Il faut bien utiliser le validateur 'identical' pas besoin d'en créer un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            $form = new Zend_Form('test');
            $pass1 = new Zend_Form_Element_Password('pass1');
            $pass2 = new Zend_Form_Element_Password('pass2');
            $submit = new Zend_Form_Element_Submit('submit');
     
            $pass1->setLabel('Password')
                ->setRequired(false);
            $pass2->setLabel('Password')
                ->setRequired(false)
                ->addValidator('identical', true, array('token' => 'pass1'));

  7. #7
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Avec ce que tu indique, sans remplir les deux case correspondantes au password, on peut soumettre le formulaire.
    Et de ce que j'ai pu comprendre il ne veut pas que cela soit ainsi, il veut que le mot de passe soit obligatoire mais qu'en plus il y ai ce test.

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par 5h4rk
    Avec ce que tu indique, sans remplir les deux case correspondantes au password, on peut soumettre le formulaire.
    Et de ce que j'ai pu comprendre il ne veut pas que cela soit ainsi, il veut que le mot de passe soit obligatoire mais qu'en plus il y ai ce test.
    Si si justement ! Ça ne marchait pas avec la façon dont je l'utilisais, car si je laissais le champ de vérification vide et que je remplissais le password, il ne me retournait pas d'erreur. En gros je veux que soit les 2 champs sont vides, soit ils sont remplis. Mais pas un sans l'autre

    J'essaierais la syntaxe de shadypierre demain, je ne suis pas sur mon poste de travail. Je vous donnerai des nouvelles, merci de votre aide !

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    Dans tous les cas, il suffirait de mettre le setRequired() à vrai.

  10. #10
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Je viens de me rendre compte que j'ai confondu plusieurs composants, je réponds à baucoup de chose et du coup je me suis planté de message en partie.

    Par contre il y a une erreur dans ce que tu as mis pas, car il faut en deuxième argument false et non true, car ça casse la chaine de validation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ->addValidator('identical', false, array('token' => 'pass1'));

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    Il s'agit d'un exemple, je vais pas non plus expliquer tous les paramètres... Et je vois pas en quoi "il faut" plus un cas que l'autre, tout dépend de ce qu'il désire faire au niveau de la chaine de validation, mais bon

  12. #12
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Dans l un des cas le required ne sert à rien tout simplement qu il soit à true ou false.
    À moins que le setRequired ne soit pas considérer comme un validateur mais dans ce cas là ça serait bizarre.

    Quand on veut donner un exemple il faut qu il soit le plus simple possible tout en évitant de modifier le comportement de base.
    C est d ailleurs ce qu il y a dans la doc mais bien avec false en deuxieme parametre

  13. #13
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $pass1 = $this->createElement('password', 'pass1');
    $pass1->setLabel('Mot de passe')
           ->addFilter('StripTags')
           ->addFilter('StringTrim');
     
    $pass2 = $this->createElement('password', 'pass2');
    $pass2->setLabel('Confirmer mot de passe')
           ->addFilter('StripTags')
           ->addFilter('StringTrim')
           ->addValidator('identical', true, array('token' => 'pass1'));
    J'ai essayé avec ça, et le résultat est le même

    Voilà ce que je veux en gros en algo (en vert ce que je veux et qui fonctionne actuellement, en rouge ce qu'il fait et que je ne veux pas), je ne peux pas être plus clair

    SI pass1 = '' ET pass2 = '' ALORS VRAI
    SI pass1 = '123' ET pass2 = '123' ALORS VRAI

    SI pass1 = '123' ET pass2 = '' ALORS VRAI
    SI pass1 = '' ET pass2 = '123' ALORS FAUX
    SI pass1 = '123' ET pass2 = '456' ALORS FAUX


    Je ne comprends d'ailleurs pas pourquoi il me renvoie VRAI à la ligne rouge.

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    Le comportement est normal tu ne spécifie pas au premier élément qu'il doit être égale au second

  15. #15
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Tout à fait, car le problème ici, c'est que si ton champs est vide, les validateurs ne sont pas appliqués.

  16. #16
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par 5h4rk
    Tout à fait, car le problème ici, c'est que si ton champs est vide, les validateurs ne sont pas appliqués.
    Ah ok, je l'ignorais, merci beaucoup !

    Une dernière petite question, j'ai vu que vous parliez d'une doc. En cherchant, je n'ai trouvé que des tutoriels qui utilisaient des fonctions sans vraiment expliquer quels paramètres prenait la fonction, ni ce qu'elle retournait. Pourriez-vous m'indiquer une doc, comme php.net pour les fonctions php par exemple, mais qui explique chaque fonction de Zend Framework ? S'il y en a une évidemment

  17. #17
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Tu peux solution ton problème en ajoutant ceci seulement au deuxième champs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ->setAllowEmpty(true)
    ->autoInsertNotEmptyValidator(false)
    Sinon pour la doc tu as http://framework.zend.com/manual/en/...idate.set.html

  18. #18
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Ça ne fonctionne pas avec ce que tu me proposes, j'ai donc rajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ->addValidator('identical', true, array('token' => 'pass2'))
    sur le 2ème champ. Mais ce n'est pas terrible pour le message d'erreur qui se pose à coté du 1er champ au lieu de 2ème (je ne trouve pas ça très esthétique de dire que le mot de passe ne correspond pas à sa vérification, plutôt que de dire que la vérification ne correspond pas au mot de passe)

    Sinon pour la doc, je pensais plutôt à une doc du type :

    array_key_exists — Vérifie si une clé existe dans un tableau

    Description
    ...

    Liste de paramètres
    ...

    Valeur de retour
    ...

    Exemples
    ...
    Je n'aime pas trop les pavés de texte, surtout que là, pour les paramètres de Validate_Identical, je ne vois que "token", pourtant dans le code que vous m'avez proposé, il y a un paramètre booléen et je ne sais pas à quoi il correspond

  19. #19
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Tu as bien mis ton deuxième champs à setRequired(true) ? car je viens d'essayer et ça fonctionne très bien

  20. #20
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Ah oui, j'avais déjà essayé avec setRequired(true), et ça fonctionnait sans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ->setAllowEmpty(true)
    ->autoInsertNotEmptyValidator(false)
    Mais le problème c'est que je veux que si le premier champ est vide, le deuxième peut être vide aussi. Si je mets setRequired(true), je ne peux plus le valider dans le cas où les 2 champs sont vides (cf l'algo que j'ai noté plus haut)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Vérification de mot de pass multiple.
    Par Sytec373 dans le forum VB.NET
    Réponses: 12
    Dernier message: 02/06/2010, 23h09
  2. [XL-2003] Vérification de mot de passe en Vba
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/06/2009, 10h51
  3. Génération et vérification de mots de passe
    Par 84mickael dans le forum Sécurité
    Réponses: 1
    Dernier message: 15/06/2009, 01h21
  4. Vérification de mot de passe
    Par kh-san dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 02/09/2007, 00h33
  5. Vérification de mot de passe et regex
    Par joseph_p dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 21/03/2006, 11h32

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