Renvoie de mdp par mail

Fermé
Ika Pro Messages postés 149 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 30 octobre 2013 - Modifié par Ika Pro le 8/12/2012 à 15:19
Ika Pro Messages postés 149 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 30 octobre 2013 - 10 déc. 2012 à 01:02
Bonjour,

Alors me voici encore devant un problème qui est le renvoi de mdp par mail.

voici mon code :

<?php

$email = (isset($_POST['email'])) ? $_POST['email'] : '';
$username = (isset($_POST['username'])) ? $_POST['username'] : '';

if($email!="" && $username!="" )
{
$resultat = $connexion->query("SELECT username, password
FROM users
WHERE email='$email'
AND username='$username'");
while ($row = $resultat->fetch())
{
$username = (stripslashes(htmlentities(trim($row['username'], ENT_QUOTES))));
$email = (stripslashes(htmlentities(trim($row['email'], ENT_QUOTES))));
$password = (stripslashes(htmlentities(trim($row['password'], ENT_QUOTES))));

$mail=mail( "$username <$email>", //on affiche la mail
"Rappel de tes identifiants",
"Bonjour," .$username. "\n
Tu as perdu ton mot de passe, le voila...\n
Ton mot de passe est :\n
" .$password. "\n
A bientot !\n
Le webmaster\n

http://www.mon-adresse.fr/",
"From: monadresse.fr <monadresse@orange.fr>");
if($mail) //si le mail est bon.....sinon......sinon
echo"<span class='erreur'>Ton mot de passe viens de t-être envoyé à l'adresse : $email <br/>Tu va les recevoir dans quelques minutes.</span>";
else
echo"<span class='erreur'>Le mot de passe ne peux t-être envoyé!<br>Renouvelle ta demande dans un instant.<br/></span>";
}
}
else
echo"<span class='erreur'>Ton adresse ne correspond pas avec ton nom et ton prénom!</span>";
?>

<script language="javascript">
function rollover(){
document.getElementById('valider');
}
</script>

<div id="container">
<span class="recevoir">Tu as perdu ton mot de passe ?<br/></span>
<span class="recevoir">Entre ton pseudo et Adresse E-mail...<br/></span>
<span class="recevoir">Tes identifiants te seront alors envoyé à cette adresse ! <br/></span>
<span class="recevoir">Merci</span><br/><br/>
<div id="connexion "> <!-- bloc contenant le formulaire -->
<form name="connexionForm" id="connexionForm" action="index.php?body=perdu_identifiant" method="post" enctype="multipart/form-data">
<fieldset>
<legend>Se connecter</legend>

<p>
<label for="nom">Ton Pseudo : </label><br/>
<input type="text" name="username" id="username" value="" style="width:250px;"/><!-- champ pour le nom -->
</p>

<p>
<label for="email">Ton adresse Mail : </label><br/>
<input type="text" name="email" id="email" value="" style="width:250px;"/>
</p>

<a href="javascript:void(0)">
<input type="submit" id="valider" name="submit" class="submit" value="Envoyer" onmouseover="rollover();"/>
</a>
</fieldset>
</form>
</div>
</div>

Et voici mes erreurs que j'ai quand je le test :

Notice: Undefined variable: connexion in C:\wamp\www\Pokemon Forever\connexion.php on line 105

QUI CORRESPOND A CETTE LIGNE :

$resultat = $connexion->query("SELECT username, password

Fatal error: Call to a member function query() on a non-object in C:\wamp\www\Pokemon Forever\connexion.php on line 105

QUI CORRESPOND A CETTE LIGNE :

$resultat = $connexion->query("SELECT username, password

Si vous pouviez m'aider.

Merci par avance.
A voir également:

2 réponses

Tralala8 Messages postés 120 Date d'inscription mercredi 17 août 2011 Statut Membre Dernière intervention 12 février 2013 14
Modifié par Tralala8 le 8/12/2012 à 16:42
Bonjour,

La variable $connexion n'est simplement pas déclarée. il faut faire :
$connexion = new PDO('mysql:host=[[HOST]];dbname=[[DB NAME]], [[USER]], [[PASS]]');
Il faut évidemment remplacer les [[...]] par les bons termes.

Enfin, et SURTOUT, conserver les mots de passe en base de données après les avoir cryptés !!! (sha1, md5, ...)

En faisant ça, il sera impossible de renvoyer le mot de passe original à son propriétaire. Il est donc plus judicieux de redéfinir un mot de passe aléatoire pour la personne et de lui envoyer par mail.

Ceci a évidemment pour but de sécuriser au mieux les comptes utilisateurs et toute partie protégée par un mot de passe.
0
Ika Pro Messages postés 149 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 30 octobre 2013 4
8 déc. 2012 à 16:54
Merci pour ton aide.

Voici mon code corrigé :

<?php

$email = (isset($_POST['email'])) ? $_POST['email'] : '';
$username = (isset($_POST['username'])) ? $_POST['username'] : '';

if($email!="" && $username!="" )
{
$resultat = $connexion = new PDO('mysql:localhost=[[LOCALHOST]];dbname=[[USERS]], [[USERNAME]], [[PASS]]');
while ($row = $resultat->fetch());
{
$username = (stripslashes(htmlentities(trim($row['username'], ENT_QUOTES))));
$email = (stripslashes(htmlentities(trim($row['email'], ENT_QUOTES))));
$password = (stripslashes(htmlentities(trim($row['password'], ENT_QUOTES))));

$mail=mail( "$username <$email>", //on affiche la mail
"Rappel de tes identifiants",
"Bonjour," .$username. "\n
Tu as perdu ton mot de passe, le voila...\n
Ton mot de passe est :\n
" .$password. "\n
A bientot !\n
Le webmaster\n

http://www.mon-adresse.fr/",
"From: monadresse.fr <monadresse@orange.fr>");
if($mail) //si le mail est bon.....sinon......sinon
echo"<span class='erreur'>Ton mot de passe et ton Login viens de t-être envoyé à l'adresse : $email <br/>Tu va les recevoir dans quelques minutes.</span>";
else
echo"<span class='erreur'>Le mot de passe ne peux t-être envoyé!<br>Renouvelle ta demande dans un instant.<br/></span>";
}
}

?> </br>

<script language="javascript">
function rollover(){
document.getElementById('valider');
}
</script>

<div style="margin:20px; margin-top:5px"><div class="quotetitle"><b></b> <input type="button" value="Mot de passe oublie" style="width:150px;font-size:14px;margin:0px;padding:0px;" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = 'Cacher'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Afficher'; }" /></div><div class="quotecontent"><div style="display: none;"
<div id="connexion "> <!-- bloc contenant le formulaire -->
<form name="connexionForm" id="connexionForm" action="index.php?body=perdu_identifiant" method="post" enctype="multipart/form-data">
<fieldset>
<p>
<label for="nom">Ton Pseudo : </label><br/>
<input type="text" name="username" id="username" value="" style="width:250px;"/><!-- champ pour le nom -->
</p>

<p>
<label for="email">Ton adresse Mail : </label><br/>
<input type="text" name="email" id="email" value="" style="width:250px;"/>
</p>

<a href="javascript:void(0)">
<input type="submit" id="valider" name="submit" class="submit" value="Envoyer" onmouseover="rollover();"/>
</a>
</div></div></div>
</fieldset>
</form>
</div>
</div>
</form>

J'ai encore 1 erreur :

Fatal error: 'PDOException «Exception non rattrapée par« SQLSTATE [42000] [1044] Access denied for user'' @' localhost un message "à la base de données '[[utilisateurs]], [[username]], [[passer] ]'' dans C: \ wamp \ www \ Pokemon Toujours \ connexion.php on line 105
(!) PDOException: SQLSTATE [42000] [1044] Access denied for user'' @ 'localhost' base de données '[[utilisateurs]], [[username]], [[pass]] "dans C: \ wamp \ www \ Pokemon Toujours \ connexion.php on line 105

à propos de cette ligne :

$resultat = $connexion = new PDO('mysql:localhost=[[LOCALHOST]];dbname=[[USERS]], [[USERNAME]], [[PASS]]');
0
Tralala8 Messages postés 120 Date d'inscription mercredi 17 août 2011 Statut Membre Dernière intervention 12 février 2013 14
9 déc. 2012 à 12:36
Il faut virer les crochets, je les avais mis pour que tu puisses bien identifier les différents termes à mettre dans cette ligne. Par exemple, en localhost, ça donne :
$connexion = new PDO('mysql:host=localhost;dbname=users, root, root');

Donc, le host est "localhost", la db est "users", le username est "root" et le pass est "root".

Ensuite, tu pourras te servir de $connexion dans ton code pour effectuer des requêtes.
0
Ika Pro Messages postés 149 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 30 octobre 2013 4
Modifié par Ika Pro le 9/12/2012 à 17:20
Merci pour ton aide.

Alors, je n'ai plus de message d'erreur (je suis sur mon serveur), j'ai configuré la ligne avec les info de mon serveur mais à chaque fois que je fais mdp oublié, il me dis que la combinaison n'est pas correcte.

$connexion = new PDO('mysql:host=localhost;dbname=users, root, root');

ou se trouve "dbname=users" c'est bien le nom de ma base de donné ou celui de ma table ? (j'ai test les 2 est il me dis pareil combinaison incorrecte).

Est-ce normal ?
0
Ika Pro Messages postés 149 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 30 octobre 2013 4
10 déc. 2012 à 01:02
Alors je n'ais plus d'erreur ni de le message mais je ne reçoit pas le mail de récupération de mot de passe.

Pourtant je suis sur mon serveur en ligne donc pas en local vous pouvez m'aider ?
0