Afficher données précises d'une base de données

iTechapp Messages postés 43 Statut Membre -  
iTechapp Messages postés 43 Statut Membre -
Bonjour,

J'aimerais afficher le mot de passe dans un mail envoyé à un utilisateur.
En gros: dans un formulaire, une personne indique son adresse email et son nom d'utilisateur, et je voudrais récupérer les infos associées à cet utilisateur, en particulier son mot de passe, qui est ensuite envoyé par mail.

J'ai écris mon code en PHP, mais cela ne fonctionne pas..

<?php
$db = mysql_connect('**', '', '');
// on sélectionne la base
mysql_select_db('**',$db);

// on crée la requête SQL
$sql = 'SELECT password FROM users WHERE username = $username && email = $email';

$sujet = 'Bienvenue sur **** !';//Le titre de l'email
$message = "Bonjour $username !\n\nBienvenue sur *.com ! Vous pouvez dès maintenant profiter de nos services, et poser votre premier * à cette adresse: http://www.****.com/home.php\n\n Nous vous recommandons de garder cet email dans vos archives dans le cas où vous oublieriez vos identifiants. \n \n------------------------------\n Rappel de vos identifiants:\nNom d'utiisateur: $username\nMot de passe: $password\n------------------------------\n\n Besoin d'aide ? Consultez notre foire aux questions à ici: http://www.*****.com/faq/, où contactez-nous sur question@**.com. \n \nÀ très bientôt, \nAnastasia de *.com";//Le message de l'email
$destinataire = $_POST['email'];//Email de l'utilisateur
$headers = "From: \"*\"<no-reply@*.com>\n";//Email du webmaster
$headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"";
mail($destinataire,$sujet,$message,$headers);
?>

Merci,
itechapp

6 réponses

  1. MickaToast Messages postés 162 Statut Membre 24
     
    Est-ce que ton code est entier ? Par exemple la fonction mysql_fetch_row() qui te permet d'aller chercher les informations dans la base de donnée ne sont pas affiché dans ton code.

    Voici les informations qui sont conseillées :

    $sql = mysql_query("SELECT password FROM users WHERE username = $username && email = $email");
    $donnee = mysql_fetch_row($sql);

    $donnee["password"] devrait contenir le mot de passe.

    Je ne sais pas si j'ai tout juste, car j'utilise la méthode PDO au lieu des fonctions mysql.
    0
  2. iTechapp Messages postés 43 Statut Membre 6
     
    Bonjour,

    J'ai essayé, mais cela ne fonctionne pas...:

    <?php
    $db = mysql_connect('***', '****', '****');
    // on sélectionne la base
    mysql_select_db('spotwerusers',$db);

    // on crée la requête SQL
    $sql = mysql_query("SELECT password FROM users WHERE username = $username && email = $email");
    $donnee = mysql_fetch_row($sql);

    $sujet = 'Bienvenue sur *** !';//Le titre de l'email
    $message = "Bonjour $username !\n\nBienvenue sur ***.com ! Vous pouvez dès maintenant profiter de nos services, et poser votre premier *** à cette adresse: http://www.***.com/home.php\n\n Nous vous recommandons de garder cet email dans vos archives dans le cas où vous oublieriez vos identifiants. \n \n------------------------------\n Rappel de vos identifiants:\nNom d'utiisateur: $username\nMot de passe: $donnee["password"]\n------------------------------\n\n Besoin d'aide ? Consultez notre foire aux questions à ici: http://www.***.com/faq/, où contactez-nous sur question@****.com. \n \nÀ très bientôt, \nAnastasia de ***.com";//Le message de l'email
    $destinataire = $_POST['email'];//Email de l'utilisateur
    $headers = "From: \"****\"<no-reply@****.com>\n";//Email du webmaster
    $headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"";
    mail($destinataire,$sujet,$message,$headers);
    ?>
    0
  3. MickaToast Messages postés 162 Statut Membre 24
     
    $sql = mysql_query("SELECT password FROM users WHERE username = $username && email = $email");

    Cette ligne est fausse, les variables ne peuvent pas être définie car elle sont dans les balises text ("").

    $variable = 1337;
    echo '$variable';
    

    Le echo n'affichera pas 1337, il affichera $variable.
    0
    1. iTechapp Messages postés 43 Statut Membre 6
       
      Je ne comprends pas comment intégrer cela à mon code.

      Tu pourrais m'aider ? Merci.
      0
    2. Pitet Messages postés 2845 Statut Membre 530
       
      Sauf qu'il a utilisé des guillemets doubles, la chaine est donc interprétée :
      $variable = 1337;
      echo "$variable"; // affiche 1337
      
      0
  4. iTechapp Messages postés 43 Statut Membre 6
     
    Merci de ta réponse,

    Je ne vois pas comment la modifier...
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. MickaToast Messages postés 162 Statut Membre 24
     
    Tu peux par exemple utiliser ceci :
    $query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
    mysql_real_escape_string($user),
    mysql_real_escape_string($password));

    https://www.php.net/manual/fr/function.mysql-real-escape-string.php
    0
    1. iTechapp Messages postés 43 Statut Membre 6
       
      Ça ne fonctionne toujours pas !

      <?php
      $db = mysql_connect('***', '***', '***');
      // on sélectionne la base
      mysql_select_db('****',$db);

      // on crée la requête SQL
      $query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
      mysql_real_escape_string($user),
      mysql_real_escape_string($password));

      $sujet = 'Bienvenue sur **** !';//Le titre de l'email
      $message = "Bonjour $username !\n\nBienvenue sur *****.com ! Vous pouvez dès maintenant profiter de nos services, et poser votre premier Spot à cette adresse: http://www.****.com/home.php\n\n Nous vous recommandons de garder cet email dans vos archives dans le cas où vous oublieriez vos identifiants. \n \n------------------------------\n Rappel de vos identifiants:\nNom d'utiisateur: $username\nMot de passe: $password\n------------------------------\n\n Besoin d'aide ? Consultez notre foire aux questions à ici: http://www.***.com/faq/, où contactez-nous sur question@****.com. \n \nÀ très bientôt, \nAnastasia de ****.com";//Le message de l'email
      $destinataire = $_POST['email'];//Email de l'utilisateur
      $headers = "From: \"***\"<no-reply@****.com>\n";//Email du webmaster
      $headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"";
      mail($destinataire,$sujet,$message,$headers);
      ?>
      0
    2. MickaToast Messages postés 162 Statut Membre 24
       
      C'est normal, j'ai utilisé l'exemple de la doc PHP !
      Dans votre cas, ça serait plutôt ceci :
      $query = sprintf("SELECT password FROM users WHERE username='%s' AND email='%s'", 
      mysql_real_escape_string($username), 
      mysql_real_escape_string($email)); 
      

      Il faut ensuite executer la requête et récupérer les variables !
      0
  7. Pitet Messages postés 2845 Statut Membre 530
     
    Salut,

    Il faudrait idéalement gérer les erreurs sql :

    $requete = "SELECT password FROM users WHERE username = '" . mysql_real_escape_string($username) . "' AND email = '" . mysql_real_escape_string($email) . "'";
    
    $sql = mysql_query($requete);
    if (!$sql) {
        echo 'Requête invalide : ' . $requete . '<br />';
    	echo 'Erreur sql : ' . mysql_error();
    	exit();
    }
    
    $donnee = mysql_fetch_row($sql);
    
    var_dump($donnee);
    


    Bonne journée
    0
    1. iTechapp Messages postés 43 Statut Membre 6
       
      Est-ce que vous pourriez m'écrire le code ? Je ne comprends vraiment rien. Je ne sais pas du tout où placer quoi, ni comment faire....

      Merci beaucoup.
      0