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

Fermé
iTechapp Messages postés 39 Date d'inscription vendredi 1 mars 2013 Statut Membre Dernière intervention 4 juin 2014 - 20 mai 2014 à 18:11
iTechapp Messages postés 39 Date d'inscription vendredi 1 mars 2013 Statut Membre Dernière intervention 4 juin 2014 - 4 juin 2014 à 13:26
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

MickaToast Messages postés 142 Date d'inscription mercredi 19 février 2014 Statut Membre Dernière intervention 23 juillet 2015 24
Modifié par MickaToast le 20/05/2014 à 18:26
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
iTechapp Messages postés 39 Date d'inscription vendredi 1 mars 2013 Statut Membre Dernière intervention 4 juin 2014 6
2 juin 2014 à 21:03
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
MickaToast Messages postés 142 Date d'inscription mercredi 19 février 2014 Statut Membre Dernière intervention 23 juillet 2015 24
Modifié par MickaToast le 2/06/2014 à 21:11
$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
iTechapp Messages postés 39 Date d'inscription vendredi 1 mars 2013 Statut Membre Dernière intervention 4 juin 2014 6
2 juin 2014 à 21:12
Je ne comprends pas comment intégrer cela à mon code.

Tu pourrais m'aider ? Merci.
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
3 juin 2014 à 10:21
Sauf qu'il a utilisé des guillemets doubles, la chaine est donc interprétée :
$variable = 1337;
echo "$variable"; // affiche 1337
0
iTechapp Messages postés 39 Date d'inscription vendredi 1 mars 2013 Statut Membre Dernière intervention 4 juin 2014 6
2 juin 2014 à 21:09
Merci de ta réponse,

Je ne vois pas comment la modifier...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MickaToast Messages postés 142 Date d'inscription mercredi 19 février 2014 Statut Membre Dernière intervention 23 juillet 2015 24
2 juin 2014 à 21:19
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
iTechapp Messages postés 39 Date d'inscription vendredi 1 mars 2013 Statut Membre Dernière intervention 4 juin 2014 6
Modifié par iTechapp le 2/06/2014 à 21:37
Ç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
MickaToast Messages postés 142 Date d'inscription mercredi 19 février 2014 Statut Membre Dernière intervention 23 juillet 2015 24
2 juin 2014 à 21:40
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
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
3 juin 2014 à 10:28
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
iTechapp Messages postés 39 Date d'inscription vendredi 1 mars 2013 Statut Membre Dernière intervention 4 juin 2014 6
4 juin 2014 à 13:26
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