Bonjour à tous , voilà je suis le tutoriel du système de membre, tout va bien jusqu'au moment ou je fais ma fonction pour récupérez un mot de passe perdu : Je reçois bien mon courrier sur ma boite mail sauf que l'URL correspond a ceci : http://localhost/Cakephp/users/password/token %3a 1-4920d1c9726810ade35ed76f5bb3b7b0 alors qu'il devrais m'afficher un ( : ) au lieu du charabiat surligné en gras et je ne trouve pas la solution ! Merci a vous voici code de mon UsersController
<?php
class UsersController extends AppController{
function password(){
if(!empty($this->request->params'named']'token'])){
$token = $this->request->params'named']'token'];
$token = explode('-',$token);
$user = $this->User->find('first',array(
'conditions'=> array('id' => $token[0], 'MD5(User.password)' => $token[1],'active' => 1)
));
if($user){
$this->User->id = $user'User']'id'];
$password = substr(md5(uniqid(rand(),true)),0,8);
$this->User->saveField('password',Security::hash($password,null,true));
$this->Session->setFlash("Votre mot de passe a correctement été modifié, voici le nouveau mot de passe $password","notif");
}else{
$this->Session->setFlash("Ce lien n'est pas valide","notif");
}
}
if($this->request->is('post')){
$v = current($this->request->data);
$user = $this->User->find('first',array(
'conditions'=> array('mail'=>$v'mail'],'active'=>1)
));
if(empty($user)){
$this->Session->setFlash("Cet email ne correspond à aucun utilisateur !","notif");
}else{
App::uses('CakeEmail','Network/Email');
$link = array('controller'=>'users','action'=>'password','token'=>$user'User']'id'].'-'.md5($user'User']'password']));
$mail = new CakeEmail();
$mail->from('noreply@graphyweb.fr')
->to($user'User']'mail'])
->subject('Mot de passe oublié')
->emailFormat('html')
->template('mdp')
->viewVars(array('username'=>$user'User']'username'],'link'=>$link))
->send();
}}}
}
?>
sa c'set bizarre mais comment ta fais pour avoir la table SQL avec token. Au debut il nous dit ce qu'il a mis dans la table (id,email,pass,token,active)
mais nous dis pas les valeur tu pourrai me passer la table SQL stp ! :)
je t'aurai bien aidez mais je suis bloquer avec la table sql LOL
j'ai le même problème, j'ai pas encore trouvé de solution, une idée pourquoi il converti les " : " en " %3a " ??
Dans layout -> emails -> html , il n'y a rien
Mais dans Emails -> html , j'ai mon ctp qui affiche une message tout con et un lien :
<?php echo $this->Html->link('nouveau mot de passe', $this->Html->url($link,true)); ?>
Salut,
Le problème vient du fait que tu mets :
$this->Html->url($link, true)
Pour faire simple, ceci crée ton lien avec les ":", ensuite tu le mets dans :
$this->Html->link();
et lui il voit les ":" donc les transformes.
Alors, j'ai cherché dans l'excellente doc cakephp et je tourne en rond pour trouver l'option qui évite ça, donc le mieux c'est de faire :
<?php echo urldecode($this->Html->link('nouveau mot de passe', $this->Html->url($link,true))); ?>
Perso, je trouve ça laid. Mais pas d'autres solutions en vue.
A++
Slt,
je viens de tester mais j'ai toujours le même problème
J'ai essayé de mettre le charset du config/email.php sur utf8 mais ça change rien non plus
Ok,
Tu peux tester :
<?php echo $this->Html->link('Nouveau mot de passe', $link); ?>
Juste pour voir si tu as les ":"?
A+