J'ai google beaucoup, mais malheureusement, je n'ai trouvé aucune solution de travail.
Je sais que c'est une mauvaise technique, mais je dois envoyer son mot de passe à l'utilisateur par e-mail.
J'ai réussi à envoyer le mot de passe de l'utilisateur Hash, mais je ne parviens pas à déchiffrer ce mot de passe.
Voici la procédure que j'utilise.
$results = DB::select("select * from dockl_users where email='" . Input::get('email') ."';");
foreach($results as $data){
$password= $data->password;
$email= $data->email;
}
Mail::send('passwordRecovery', array('email' =>$password), function($message)
{
$message->to(Input::get('email') )->subject('Password Recovery');
});
Le code ci-dessus envoie Encrypted
mot de passe à l'utilisateur par e-mail mais lorsque j'essaie de décrypter, il me donne le message d'erreur suivant.
$decrypt= Crypt::decrypt($data->password);
Données invalides.
throw new DecryptException("Invalid data.");
Veuillez me guider comment y parvenir ..
La réponse courte est que vous ne "déchiffrez" pas le mot de passe (car il n'est pas chiffré - il est haché).
La réponse longue est que vous ne devez pas envoyer à l'utilisateur son mot de passe par e-mail ou de toute autre manière. Si l'utilisateur a oublié son mot de passe, vous devez lui envoyer un e-mail de réinitialisation du mot de passe , et lui permettre de changer son mot de passe sur votre site Web.
Laravel a la plupart de ces fonctionnalités intégrées (voir la documentation Laravel - Je ne vais pas tout reproduire ici. Également disponible pour les versions 4.2 et 5. de Laravel).
Pour plus de lecture, consultez ce post 'blogoverflow': Pourquoi les mots de passe doivent être hachés .
Pour comparer le mot de passe haché avec la chaîne de mot de passe en texte brut, vous pouvez utiliser le PHP password_verify
if(password_verify('1234567', $crypt_password_string)) {
// in case if "$crypt_password_string" actually hides "1234567"
}