Formulaire de mot de passe perdu [Résolu]

Messages postés
79
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
17 octobre 2010
- - Dernière réponse : Lyle56
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
- 21 sept. 2010 à 20:02
Bonjour à tous,
Bon voila, je suis en train de mettre en place un système de récupération de mot de passe sur mon site, et j'ai beau chercher, mais je ne trouve pas l'erreur dans mon code. Lorsque j'appuie sur le bouton "BT_Recuperermotdepasse" il ne se passe rien !

Mon formulaire :

<form method= "post">

</form>

Voici mon code php :

<?php
if(isset($_POST["BT_Recuperermotdepasse"]))
{
 if($_POST["Adresse_Email_8"] !='')
  {
  mysql_connect("localhost", "XXXXX", "XXXXX");
  mysql_select_db("php");
  $retour = mysql_query
  ("SELECT COUNT(*) AS nbre_entrees FROM
  Comptes_Utilisateurs
  WHERE
  Adresse_Email_8 ='". $_POST["Adresse_Email_8"] ."' AND  Actif='1'");
  $donnees = mysql_fetch_array($retour);
  $nbtrouver = $donnees['nbre_entrees'];
  mysql_close();
  
   if($nbtrouver == 0){   
   $message = "Désolé mais l'adresse email '". $_POST["Adresse_Email_8"] ."' n'existe pas.";
   }
   else
   { 
   mysql_connect("localhost", "XXXXX", "XXXXX");
   mysql_select_db("php");
   $reponse = mysql_query("SELECT * FROM Comptes_Utilisateurs WHERE
   Adresse_Email_8='".$_POST["Adresse_Email_8"]."' 
   AND Actif='1'");
   $donnees = mysql_fetch_array($reponse);
   $Nom_Utilisateur_8 = $donnees['Nom_Utilisateur_8'];
   $Mot_de_Passe_8 = $donnees['Mot_de_Passe_8'];
   mysql_close();
   
   $subject = "Recuperation de mot de passe";  
   $TO = "'".$_POST["Adresse_Email_8"]."'";
   $h  = "From: " . $TO;
   $message_mail = "Recuperation de mot de passe
   Bonjour $Nom_Utilisateur_8,
   --------------------------------------------------------------------------------------------
   Votre mot de passe : $Mot_de_Passe_8
   --------------------------------------------------------------------------------------------";
    mail($TO, $subject, $message_mail, $h);
    $message_succes = "Votre mot de passe vient être envoyé par mail !";
   } 
  }
   else
  {
  $message = "Adresse email invalide !
Merci de bien remplir le champ ci dessous.";
  }
}
?>

Merci d'avance pour vos réponses,
Cordialement Sub_Mat
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
79
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
17 octobre 2010
3
Merci
J'ai tout simplement enlevé Actif='1' dans ma requète et maintenant sa marche !
Encore merci pour m'avoir aider !
A bientot,
Sub_Mat

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 194 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Sub_Mat
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
27
0
Merci
salut

  $reponse = mysql_query("SELECT * FROM Comptes_Utilisateurs WHERE
   Adresse_Email_8='".$_POST["Adresse_Email_8"]."' 
   AND Actif='1'") or die(mysql_error());
Commenter la réponse de coucou747
Messages postés
79
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
17 octobre 2010
0
Merci
Salut Coucou747,
Merci de m'avoir répondu !
J'ai ajouter "or die(mysql_error());" à ma requète, comme tu m'as dis.
Et toujours rien, aucun message d'erreur !
Je ne vois pas ou est le problème, pour moi tout est logique dans ma démarche !
Commenter la réponse de Sub_Mat
Messages postés
79
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
17 octobre 2010
0
Merci
Excuse moi, si si j'ai bien un message d'erreur : Unknown column 'Actif' in 'where clause'
Peux-tu me dire comment résoudre ce problème ?
Merci d'avance
Commenter la réponse de Sub_Mat
Messages postés
1
Date d'inscription
mardi 12 février 2008
Statut
Membre
Dernière intervention
5 août 2009
0
Merci
Bonsoir à tous !

je suis intéressé par le formulaire de retour de compte client et je souhaiterai l'intégrer à une de mes pages.
Pourriez vous m'orienter, svp?
merci d'avance
tof
Commenter la réponse de cs_tofinger
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011
0
Merci
sans vouloir chipoter, il vaut mieux stocker les mots de passe de façon cryptée avec un md5 par exemple, quitte a régénérer un nouveau pass en cas de perte ou alors stocker dans une base différente les équivalences md5 <-> passe non crypté.

Salutations
Commenter la réponse de cs_moumouf
Messages postés
3
Date d'inscription
mardi 16 août 2005
Statut
Membre
Dernière intervention
21 septembre 2010
0
Merci
BJR à toi,

je n'arrive pas à comprendre le sens de cette ligne:
$nbtrouver = $donnees['nbre_entrees'];

Bref! Je te suggère de le remplacer par cette ligne pour compter le nombre de résultat qui satisfont à ta requête:

$nbtrouver = mysql_num_rows['$donnees'];

Good Luck!
Commenter la réponse de kpiforever
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
0
Merci
Bonjour,

@kpiforever

Décortiquons cette requéte :

SELECT COUNT(*) AS nbre_entrees FROM  Comptes_Utilisateurs


On compte le nombre de Comptes_Utilisateurs et on range le résultat dans une colonne nommée 'nbre_entrées'

  WHERE Adresse_Email_8 ='". $_POST["Adresse_Email_8"] ."' AND  Actif='1'");


Ce décompte est fait pour les comptes qui ont l'adresse saisie dans le formulaire
[ en passant si Actif est un booléen en base la syntaxe est soit 'Actif = 1' soit 'Actif = true' ]

Lorsque qu'il fait son ' $donnees = mysql_fetch_array($retour);'
il range dans données le premier résultat de sa requéte ( qui au passage n'en compte qu'un )
l'index $donnees['nbre_entrees'] contient donc bien le nombre de compte trouvés.

@Sub_Mat

Attention à ton code : tu ne test pas la validité du mail; ici si on t'envoie ' ' le script va executer ta requête ... et donc planter...

l'idéal au lieu de faire :
if($_POST["Adresse_Email_8"] !='')


pourrais être ceci :

$Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#'; 
   if(preg_match($Syntaxe,$mail_test)) 


La variables $Syntaxe va varié suivant les tutos, personnes ou autres ...
Commenter la réponse de Lyle56