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

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. 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
    1. 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
      1. $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. Je ne comprends pas comment intégrer cela à mon code.

          Tu pourrais m'aider ? Merci.
          0
        2. Sauf qu'il a utilisé des guillemets doubles, la chaine est donc interprétée :
          $variable = 1337;
          echo "$variable"; // affiche 1337
          
          0
      2. Merci de ta réponse,

        Je ne vois pas comment la modifier...
        0
        1. 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. Ç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. 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
        2. 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. 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