Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-06-2008 16:40:07

Jocio
Membre
Lieu: Marseille
Date d'inscription: 06-07-2007
Messages: 42

Zend_Form champ password avec md5 ?

Bonjour,

Je débute avec le Zend Framework sur un projet en stage et je bloque sur un formulaire de création de compte utilisateur où je dois entrer dans la base de donnée le password.
Je voudrai le mettre en md5.

Je récupère les champs du formulaire et je les ajoute dans la BD MySQL comme ceci :

Code:

$newRow = $utilisateur->createRow($form->getValues());
$newRow->save();

Création de l'élément passwd du formulaire :

Code:

$password = new Zend_Form_Element_Password('passwd');
$password->addFilters(array('StringTrim'))
->addValidators(array(
      'Alnum',
      array('StringLength', false, array(6, 20))
))
->setRequired(true)
->setLabel('Password : ');

// Je l'ajoute ensuite au formulaire

Le prolbème est que je ne sais pas quand appliquer la fonction md5() sur le passwd :s

Merci d'avance si vous pouvez m'aider :-)


Pouf c'est tout !

Hors ligne

 

#2 11-06-2008 16:50:10

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

Re: Zend_Form champ password avec md5 ?

Perso jme suis fait un petit filtre qui se contente de crypter ce qu'on lui passe wink

Il n'existe pas(à ma connaissance) d'outil prédéfini pour crypter une chaine

Dernière modification par stf (11-06-2008 16:50:45)

Hors ligne

 

#3 11-06-2008 19:44:59

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Zend_Form champ password avec md5 ?

Pourquoi n'utilises-tu pas simplement la fonction md5 avant d'enregistrer le mot de passe dans la base de données.
http://www.manuelphp.com/php/function.md5.php

Si je ne me trompe pas, ça donne quelque chose comme :

Code:

$newRow = $utilisateur->createRow(md5($form->getValues()));
$newRow->save();

Hors ligne

 

#4 11-06-2008 22:48:43

Jocio
Membre
Lieu: Marseille
Date d'inscription: 06-07-2007
Messages: 42

Re: Zend_Form champ password avec md5 ?

Slaughter :
Je comprend pas très bien ce que la fonction md5 va faire sur ce que rend la fonction "getValues()"
Tout les champs vont être cryptés ? moi je veux appliquer md5 que sur le champ passwd.

stf :
un filtre, c'est pas fait pour tester la valeur plutôt ?
c'est un peu fourbe de le faire comme ça :-p


Pouf c'est tout !

Hors ligne

 

#5 12-06-2008 08:37:42

Roulio
Membre
Lieu: Alsace
Date d'inscription: 20-11-2007
Messages: 137
Site web

Re: Zend_Form champ password avec md5 ?

Les validateurs sont fait pour tester la nature des données (ex. validateurs alnum, host,...)  alors qu'un filtre s'est fait pour transformer les données envoyées. (Ex. le filtre StringTrim va renvoyer la même valeur en utilisant la fonction trim).

***
Tu as raison par rapport à ce qu'a noté Slaugter

Code:

$newRow = $utilisateur->createRow(md5($form->getValues()));
$newRow->save();

ça va appliquer la fonction md5 sur tout les champs.

Essaye plutôt comme ça

Code:

$newRow = $utilisateur->createRow();
$newRow->login = $form->getValue('login');
$newRow->password = md5($form->getValue('password'));
$newRow->save();

ou en surchargeant la valeur de password (je n'ai pas tester)

Code:

$newRow = $utilisateur->createRow($form->getValues());
$newRow->password = md5($form->getValue('password'));
$newRow->save();

Dernière modification par Roulio (12-06-2008 08:48:09)

Hors ligne

 

#6 12-06-2008 08:48:41

Jocio
Membre
Lieu: Marseille
Date d'inscription: 06-07-2007
Messages: 42

Re: Zend_Form champ password avec md5 ?

Ah ok ... merci beaucoup.

Je vais essayer comme ça :-)

PS : ça marche mais du coup maintenant je peut plus mettre de validateur sur la taille du mdp.
La taille est prise sur la taille du md5 (environ 32 caractères) :s

Dernière modification par Jocio (12-06-2008 09:25:32)


Pouf c'est tout !

Hors ligne

 

#7 12-06-2008 09:08:34

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Zend_Form champ password avec md5 ?

Jocio a écrit:

Slaughter :
Je comprend pas très bien ce que la fonction md5 va faire sur ce que rend la fonction "getValues()"
Tout les champs vont être cryptés ? moi je veux appliquer md5 que sur le champ passwd.

stf :
un filtre, c'est pas fait pour tester la valeur plutôt ?
c'est un peu fourbe de le faire comme ça :-p

Heu.... oui, c'est pas faux, toutes mes excuses pour cette erreur. La correction de roulio est ce que j'aurai du dire.

Hors ligne

 

#8 12-06-2008 09:44:41

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

Re: Zend_Form champ password avec md5 ?

L'avantage d'avoir fait un filtre, c'est que le jour où je veux changer de cryptage, j'ai qu'un endroit a modifier (en fait c'est comme faire une fonction ^^ )

Apres l'utilité de le mettre dans un filtre, pour moi ca sert a traiter des données d'entrée pour en renvoyer en sortie, donc c'est exactement ca smile

Hors ligne

 

#9 12-06-2008 10:04:52

Roulio
Membre
Lieu: Alsace
Date d'inscription: 20-11-2007
Messages: 137
Site web

Re: Zend_Form champ password avec md5 ?

@ Jocio : Tu ne devrais pas rencontrer de difficulté à ce niveau car lorsque tu utilise md5 s'est uniquement une fois que tu as passé la validation et que tu enregistre tes données.

Tu devrais avoir :

Code:

 
// Envoie de POST
if ($this->_request->isPost()) {
    // Préparation des filtres
    $filters = array (
    '*' => 'StringTrim',
        ... // la suite des filtres
                    
    );
                
    // Préparation des validateurs
    $validators = array (
        'login' => array (
            'NotEmpty',
            'presence' => 'required',
            'messages' => "Informations sur le client : Le login n'est pas renseigné"
        ),
        'password' => array (
            // validateur qui vérifie la longueur
        ),... // la suite des validateurs
    );
                
    $post = $this->_request->getPost();
                
    Zend_Loader::loadClass('Zend_Filter_Input');
    $input = new Zend_Filter_Input($filters,$validators,$post);
                
                
    if ($input->isValid()) 
    {
        // Si on réussi la validation on continu
        // appliquer ce qu'on a vu avant : on  enregistre les valeurs dans la DB 
    }
}

Attention le code n'est pas complet mais la logique est là.

On a bien comme process :
après l'envoie d'un formulaire
1) création des filtres
2) création des validateurs (ici tu utilise Zend_validate StringLength pour tester la longueur des chaînes)
    cf : http://framework.zend.com/manual/en/zen … ing_length
3) application de tout les paramètres aux données envoyées
4) Si tout est ok : enregistrement dans la DB (ici tu utilise md5 pour password)

Bon courage smile
a++

Dernière modification par Roulio (12-06-2008 10:11:38)

Hors ligne

 

#10 12-06-2008 12:52:57

Jocio
Membre
Lieu: Marseille
Date d'inscription: 06-07-2007
Messages: 42

Re: Zend_Form champ password avec md5 ?

Finalement, j'ai utilisé ta technique Roulio :

Code:

// Récupération valeur du formulaire
$newRow = $utilisateur->createRow($form->getValues());
// cryptage du mdp
$newRow->passwd = md5($form->getValue('passwd'));
// Sauvegarde dans la base de donnée
$newRow->save();

Et j'ai donc pu remettre en place le validator de 20 caractères sur le mot de passe

merci beaucoup pour votre aide très précieuse :-)


Pouf c'est tout !

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