Bonjour ^^,

voici mon problème le tuto espace membre avec cakephp quelques petit souci qui se sont regler enfin presque a un point prés l activation du compte
je vous laisse mon code pour la fonction activate etant nouveau sur cakephp j ai suivi textuellement les convention de graifikart qui explique tres bien les tutoriel:

function activate($token){
        $token = explode('-',$token); 
        $user = $this->User->find('first',array(
            'conditions' => array('id' => $token[0],'MD5(User.password)' => $token[1],'active' => 0)
        )); 
        if(!empty($user)){
            $this->User->id = $user'User']'id'];
            $this->User->saveField('active',1);
         $this->Session->setFlash("Votre compte a bien été activé","notif");          
            $this->Auth->login($user'User']); 
        }else{
         $this->Session->setFlash("Ce lien d'activation n'est pas valide","notif",array('type'=>'error')); 
        }
        $this->redirect('/');
        }

voici ce qui est le probleme :
1°) inscription tres bien
2°) envoie de mail tres bien
3°) activation pas bien

le debug m indique id-est le password encrypte en MD5
quand je clike sur le lien il me renvoie l erreur suivante:
Ce lien d'activation n'est pas valide

voila j espere avoir ete assez explicite

merci de vos reponse ^^

7 réponses


coloo
Réponse acceptée

Peut-être que ton problème est sur l'un de ces topics :

[15:42] <coloo> giizmo: http://www.grafikart.fr/forum/topic/2206
[15:44] <coloo> giizmo: http://www.grafikart.fr/forum/topic/647

giizmo
Auteur
Réponse acceptée

probleme resolu j'ai changer le token ^^ grace a coloo puis grafikart ^^ http://www.grafikart.fr/forum/topic/647

merci genial la communauté ^^

Niveau sécurité ce n'est pas super. Tu devrais générer un vrai token qui change entre chaque action. Car la tu montres clairement comment tu encodes les mots de passes... infos plus que précieuse pour un hacker.

Sinon bah le problème se trouve ici au vu du message d'erreur que ça retourne:
$user = $this->User->find('first',array(
'conditions' => array('id' => $token[0],'MD5(User.password)' => $token[1],'active' => 0)
));

Et ceci me semble un peu bizarre : 'MD5(User.password)'. Ca ne serrait pas 'password' ?

giizmo
Auteur

pourtant je n ai fait que suivre le tuto de grafikart qui dans la video teste est cela fonctionne en plus j ai fait un test avec les sources sur mon serveur est ca fonctionne alors serieux je comprend plus rien.

merci pour la securite en meme tant il faut deja trouver le NDD et ou il est heberger ensuite c'est un NDD qui me sert pas souvent je l utilise pour mais test uniquement ^^ mais merci kan meme je v revoir tout ca

0 - Tu as la bonne version de cake ?

1 - Tu as bien l'enregistrement dans ta BDD ?
1.2 - Tu es sur que ton champs varchar est assez grand pour toutes la chaines de caractère ?

2 - Si oui : Tu es sur de l'encodage du password bien du MD5 ?

Vas plutôt chercher vers le deuxième point qu'a énoncé hotgeart. Fais des debug et tu verras vite si c'est un problème d'encodage ou non.

Bonne continuation

giizmo
Auteur

0- la version a ete mise a jour hier (merci coloo)
1- L'enregistrement ce fait bien
1.2 le champs password est en varchar 255
2- la est le problème il me semble que cakephp rajoute une cle de securite