Envoi mot de passe contenu dans une BDD par mail

mail envoyé mais sans le mot de passe

a marqué ce sujet comme résolu.
Auteur du sujet

salut tout le monde,

Aurait-il une âme charitable pour qui puisse m' aider à envoyer un mot de passe (’mdp’) d' une table 'utilisateurs’ qui appartient à une BDD 'desert’. Dans un premier temps l' envoi de mail avec un message fonctionne à merveille. Mais mon maître de stage m' a demandé de récupérer le 'mdp' d' un utilisateur au cas où ce dernier l' aurait oublié. Donc si quelqu' un pourrait se pencher sur mon cas, ce serait très sympa de sa part.

Voici mon code =

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Mot de passe oubli&eacute</title>
    </head>
    <body>
        <h1>Mot de passe oubli&eacute</h1>
            <form method="post">
            <label>Email</label>
            <input type="email" name="email" required><br>
            <label>Message</label>
            <textarea name="message" required></textarea><br>
            <input type="submit">
        </form>
        

    
<?php

//connexion;

$userdb="phpmyadmin";
$passdb="*******";
$dbname="******";
$host="localhost";


try
{
    $bdd = new PDO('mysql:host='. $host .';dbname='. $dbname .';charset=utf8', $userdb, $passdb);
}
catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage());
}



//envoi d' un simple mail avec son message
        if(isset($_POST['message'])){
            $position_arobase=strpos($_POST['email'],'@');
            if($position_arobase===false)
                echo '<p>Votre email doit comporter un arobase.</p>';
            else {
                $retour=mail('*******@gmail.com','Envoi depuis *******', $_POST['message'], 'From : '.$_POST['mail']);
                if($retour)
                    echo '<p>Votre message a &eacutet&eacute envoy&eacute.</p>';
                else
                    echo '<p>Erreur.</p>';
            }
        }
        
  



//envoi du mdp par mail (sur quoi je bloque)

if(!empty($_POST['mail']))
$mail = $_POST['mail'];
else
exit("mail vide.");
 

$sql = "SELECT mail FROM utilisateurs WHERE mail = '".$mail."' ";
$req =mysql_query($sql) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
if(mysql_num_rows($req) != 1)//si le nombre de lignes retourne par la requete != 1
exit("mail inconnu.");
else
{
$row1 = mysql_fetch_assoc($req);
$retour = mysql_query("SELECT mdp FROM utilisateurs WHERE mail = '".$mail."' ");
$row2 = mysql_fetch_assoc($retour);

 
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$objet = 'Récupération de votre mot de passe';
 
if(!mail($row1['mail'], $objet, $row2['mdp'], $headers))
echo 'probleme lors de l\'envoi du mail';
else
echo 'mail envoye';
}


?>
    </body>
</html>

Édité par must.hmi

+0 -0

Hello,

Quel est ton problème exactement ? Que donne ton code actuellement ? Il est difficile de cerner la question et on ne peut pas deviner pour toi. ;)

À noter qu’en cas de mot de passe oublié, il n’est pas du tout recommandé de le renvoyer, car cela implique de le stocker en clair dans une base de données, ce qui est une très mauvaise pratique en matière de sécurité. À la place, on envoie un lien par e-mail avec un clé aléatoire qui permet à l’utilisateur de changer de mot de passe.

Auteur du sujet

salut, merci pour ton retour.

En fait mon maître de stage m' a dit que vu qu' on bosse en local pour un réseau de chauffeur routier et bien la sécu il en a rien a carré en fait. Concernant mon problème, c' est que j' essaie éperdumment de renvoyer le mot de passe ( qui se trouve dans la BDD) à l’utilisateur qui rentre son mail via mon formulaire que j' ai créé . mais j' y arrive pas cela fait 4 jours , si tu pourrais m' aiguiller parce que je suis novice en dév. Merci

PS: mon code s’ arrete juste à un envoi de message par mail et je souhaite renvoyer un mdp

Édité par must.hmi

+0 -0
Auteur du sujet

du coup j' ai remplacé html<input type="email" name="email" required><br> par html<input type="mail" name="email" required><br> rien ne change mais quand je fais html<input type="mail" name="mail" required><br> ça me dit " Votre email doit comporter un arobase." j' avoue je suis perdu !!

En fait ce qui me rend dingue c' est que je n' arrive pas à récupérer un 'mdp' de ma BDD, y 'aurait il un problème au niveau de mon code :

if(!empty($_POST['mail']))           
    $mail = $_POST['mail'];

    echo"Veuillez remplir le champ Email!";
    



    


    
    $sql = "SELECT mail FROM utilisateurs WHERE mail = '".$mail."' ";
    $req =mysql_query($sql) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
    if(mysql_num_rows($req) != 1)       //si le nombre de lignes retourne par la requete != 1
    exit("Mail inconnu.");
else
{
    $row1 = mysql_fetch_assoc($req);
    $retour = mysql_query("SELECT mdp FROM utilisateurs WHERE mail = '".$mail."' ");
    $row2 = mysql_fetch_assoc($retour);

 
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
    $objet = 'Récupération de votre mot de passe';
    
    if(!mail($row1['mail'], $objet, $row2['mdp'], $headers))
    echo 'probleme lors de l\'envoi du mail';
else
    echo 'mail envoye';

Édité par must.hmi

+0 -0

Cette réponse a aidé l’auteur du sujet

C’est normal car dans ta condition, tu lui demandes d’afficher ce message si le champ email n’est PAS vide. Et de plus, attention à la ligne 2. Cette variable ne sera pas utilisée dans le reste de ton code. Déclare cette variable avant ta condition.

HTTP/1.1 418 I’m a teapot

+1 -0

Salut,

Je ne sais pas si ton indentation est correcte mais ta logique n’est pas vraiment juste. Dans ton cas, ta variable $mail de ton else dans lequel tu fais ta requête de sélection du mdp, elle n’existe pas, comme le dit EtienneR.

Si l’utilisateur a bien rempli le champ, le code à l’intérieur de ton premier IF va s’exécuter mais tout ce qui est contenu dans ton ELSE, là où tu fais ta requête pour aller chercher le MDP, cela ne sera jamais exécuté vu que ta la condition a été remplie.

Pour être + logique, il te faudrait faire quelque chose comme ça :

<?php
if(!empty($_POST['mail']))
{
    /*
    * Vérifier que l'email existe
    */

    if(mysql_num_rows($req) == 1)
    {
        /*
        * Récupérer le MDP et l'envoyer
        */
    }
    else
        echo 'Email inconnu !';
}
else
    echo 'Veuillez remplir le champ email !';
?>

Et pourquoi t’utilises les fonction mysql_xxxx alors que t’utilises PDO pour faire ta connexion à la BDD ?

Édité par Charvalos

+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte