Puisque tu "haches" le mot de passe de l'utilisateur il ne sera pas possible de lui restituer... On en revient donc à ce que je disais plus haut : il faut générer un nouveau mot de passe et l'envoyer par mail.
Pour commencer tu peux créér un formulaire afin que l'utilisateur renseigne son pseudo et son adresse email, puis effectuer quelques contrôles afin de vérifier que l'adresse fournie existe dans ta BDD et correspond au pseudo indiqué. Jusque là je pense que tu ne devrais pas avoir de problèmes !
Si tous les contrôles sont corrects, il faudra générer un mot de passe aléatoire. Voici un exemple de code que j'ai utilisé dans l'un de mes scripts (il est sans doute possible de faire mieux, mais je ne suis pas un pro...) :
// On indique que le mot de passe aléatoire contiendra entre 8 et 20 caractères
$nbre_caracteres = rand(8,20);
// On créé un tableau contenant la liste des caractères qui pourront être utilisés pour le nouveau mot de passe
$liste_caracteres = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9','0');
// On initialise la variable $nv_pass
$nv_pass = '';
// On effectue une boucle qui choisira aléatoirement des caractères...
// ... parmi la liste et retournera autant de caractères qu'il aura été défini...
// ... par la variable $nbre_caracteres
for ($i = 0 ; $i < $nbre_caracteres ; $i++) {
// A chaque passage de la boucle on détermine aléatoirement un chiffre entre 0 et 61...
// Ce qui correspond au nombre de caractère contenus dans le tableau de la variable $liste_caracteres
$choix_caracteres = rand(0,61);
// On affecte à chaque passage de la boucle le caractère...
// ... qui aura été sélectionné dans la variable $nv_pass
$nv_pass .= $liste_caracteres[$choix_caracteres];
}
Une fois ceci effectué il ne reste plus qu'à enregistrer le nouveau mot de passe dans la BDD (requêtre SQL "UPDATE" dont tu connais certainement déjà l'exitence, sans oublier toutefois de le hacher en md5 ou autre... ^^) et l'envoyer par email à l'utilisateur...
$mail_destinataire = $mail;
$entete .= 'Bonjour '.$pseudo;
$titre = 'Monsite.fr - Demande de nouveau mot de passe';
$message = '
Vous avez reçu cet email depuis le site http://www.monsite.fr
Votre nouveau mot de passe est : '.$nv_pass.'
Veuillez le noter pour éviter de l\'égarer.
Cordialement, l\'équipe de monsite.fr';
mail($mail_destinataire, $titre, $message, $entete);
Voilà, testé et approuvé par mes soins (mais certainement améliorable), en espérant que cela pourra t'aider !
Par la suite prévoies tout de même que l'utilisateur puisse modifier son mot de passe, car il risque de ne pas apprécier d'avoir à taper à chacune de ses connexions sur ton site un mot de passe comprenant entre 8 et 20 caractères qui ne signifient absolument rien. En l'état le mot de passe sera certes plus sécurisé qu'un "michel03" ou "janvier44", mais nettement moins pratique...
Voilà, bon courage pour la suite !
