Page 1 sur 1

Mot de passe oublié

Posté : 21 nov. 2008, 15:56
par Romuald632
Bonjour,
J'ai un formulaire d'inscription, sur lequel j'ai mis la possiblité de récupérer son mot de passe.
Là j'ai deux soucis:
- 1 si je ne met rien dans mon champs, ça me met qu'on vien de me renvoyer mon mot de passe, alors que je vérifie que le champs est vide
- 2 si mon adresse est bonne, j'ai toujours le message m'indiquant qu'on me renvoie le MDP. Problème il n'arrive jamais !!!
<?php 
//Vérification de l'existence de la variable ; on vérifie aussi qu'elle n'est pas vide
if((isset($_POST['email'])) && (!(empty($_POST['email']))))
{
$mail = htmlspecialchars($_POST['email'], ENT_QUOTES); // On sécurise la variable avant
//On compte le nombre d'entrée(s) dans la table où le champ "mail" vaut $mail
$nombremail = mysql_result(mysql_query("SELECT COUNT(*) FROM identifiant WHERE mail_contact = '".$mail."'"), 0);

if ($nombremail!= 0)
{

// Le code ici...

}
else
{
?>
<div id="pays">Attention : Cette adresse e-mail n'existe pas !</div>
<br />
<br />
<form method="post" enctype="multipart/form-data" action="oubli_mdp.php">
<table class="tableau_formulaire" border="0" align="center" cellpadding="2" cellspacing="2">
<tr>
<td class="tableau_formulaire_titre_saisie">Votre mail :</td>
<td class="tableau_formulaire_saisie"><input type="text" name="email" size="40" value="" maxlength="70"></td>
</tr>
<tr>
<td height="28" class="tableau_formulaire_titre_saisie">&nbsp;</td>
<td valign="bottom" class="tableau_formulaire_saisie"><input type="submit" name="upload" value="Réessayer"></td>
</tr>
</table>
</form>
<br />
<?php
}
}
else
{
?>
<?php
echo '<div id="pays">';
echo 'Nous venons de vous renvoyer votre mot de passe à '.$mail.'';
echo '</div">';}
?>
Si vous pouviez m'aider
D'avance merci

Posté : 21 nov. 2008, 16:37
par charabia
Avant de voir ton code juste une question, le mot de passe ressemble à quoi dans ta base de données ? C'est visible ou crypté ?

Posté : 21 nov. 2008, 17:23
par Romuald632
Il est visible

Posté : 21 nov. 2008, 18:16
par AB
Ton code est tout patraque :
- Tu mets un "if" suivi de deux "else"...
- Tu fermes une balise ?> pour en ouvrir une autre juste après
- Et enfin je ne sais plus sur quel ton dire que pour protéger une requête on utilise mysql_real_escape_string() qui est spécialement conçue à cet effet.

Un peu de rigueur et d'organisation dans ton code et ça devrait allez mieux.

Posté : 21 nov. 2008, 19:23
par stopher
Salut ,

Juste pour donner mon avis sut ton principe de fonctionnement , un mot de passe ne devrait jamais être stocké en clair !!!

Imagines tu te fais pirater ta base ... tous les mots de passe de tes "clients" sont maintenant connu du pirate ...
Si le client n'utilises qu'un mot de passe pour beaucoup de ses comptes ( ce qui est souvent le cas ) , le pirate peut alors prendre le contrôle des boites mails des clients par exemple ...

Tu devrais plutôt essayer une autre méthode type question secrete , redefinition de mot de passe automatique .. ou autres ...

Désolé de ne pas répondre à ta question par ce post , mais je trouve bête de travailler sur du code qui n'est pas conseillé dutout ....

Bonne continuation en tt cas .
Stopher.

Posté : 21 nov. 2008, 20:07
par charabia
Voila pourquoi j'ai posé la question. COmme le dit stopher, tu ne dois jamais stocker des mots de passes en clair dans ta base. Ils doivent être toujours cryptés (sha1 ou md5, sachant que sha1 est mieux).

Je pense donc que tu dois refaire ça, même si ça fait du boulot. Le cryptage en lui même est très simple.

Pour la récupération, le principe à faire est de renvoyer un passe aléatoire à la personne en indiquant dans le mail qu'il peut le modifier ensuite à son aise dans son compte.