Membre change son mot de passe

Membre change son mot de passe - PHP - Programmation

Marsh Posté le 23-03-2011 à 11:00:24    

Bonjour à tous,  
Je fais appel à vous car j'ai un petit soucis avec mon code. Je m'explique :
Lorsqu'un membre est connecté, il a la possibilité de changer son mot de passe, cependant, le code contient quelques erreurs.
 
Voici mon code :
changepassword.php

Code :
  1. <div align="center">
  2. <?php
  3. if (!isset($_SESSION['login']))
  4. {
  5. header ('Location: index.php');
  6. exit();
  7. }
  8. $login = htmlentities(trim($_SESSION['login']));
  9. if (isset($_POST['old_pass']) && isset($_POST['new_pass2']) && isset($_POST['new_pass']))
  10. {
  11. $old_pass = $_POST['old_pass'];
  12. $new_pass2 = $_POST['new_pass2'];
  13. $new_pass = $_POST['new_pass'];
  14. $base = mysql_connect ('', '', '');
  15. mysql_select_db ('suivi des absences', $base);
  16. if($new_pass == $new_pass2)
  17. {
  18.  $verif_pass = mysql_query("SELECT password FROM membres WHERE login='".$_SESSION['login']."'" );
  19.  $array_verif_pass = mysql_fetch_array($verif_pass);
  20.  $array_pass = $array_verif_pass['password'];
  21.  if($array_pass == $old_pass)
  22.  {
  23.   mysql_query("UPDATE membres SET password='".mysql_escape_string($new_pass)."' WHERE login='".$_SESSION['login']."'" );
  24.   mysql_close($base);
  25.  }
  26.  echo 'Votre mot de passe a bien été enregistré';
  27. }
  28. else
  29. echo 'les mots de passe ne sont pas identiques';
  30. }
  31. else
  32. echo 'veuillez remplir tous les champs le formulaire';
  33. ?>
  34. <form method="post">
  35.     <p><strong><u>Changement de mot de passe</u></strong></p>
  36. <table >
  37.     <tr>
  38.         <td >Ancien mot de passe</td>
  39.         <td><input type="text" id="old_pass" name="old_pass" /></td>
  40.     </tr>
  41.     <tr>
  42.         <td>Nouveau mot de passe</td>
  43.         <td ><input type="text" id="new_pass" name="new_pass" />
  44.         </td>
  45.     </tr>
  46.     <tr>
  47.         <td>Confirmer le mot de passe</td>
  48.         <td><input type="text" id="new_pass2" name="new_pass2" /></td>
  49.     </tr>
  50.     <tr>
  51.         <td><p>&nbsp;</p>
  52.         </td>
  53.         <td>
  54.           <input type="submit" />
  55.           <input type="reset" />
  56.         </td>
  57.     </tr>
  58. </table>
  59. </form>
  60. <form id="form3" name="form2" method="post" action="parametres.php">
  61.     <div align="center">
  62.      <p><input type="submit" name="Annuler" id="Annuler" value="Retour" /></p>
  63.     </div>
  64. </form>
  65. </div>


 
Les erreurs que je rencontre :
 
1) lorsque je vais sur cette page (changepassword.php), il m'affiche directement "veuillez remplir tous les champs le formulaire", alors que si je rentre exprès que l'ancien mot de passe, il me met comme message d'erreur "les mots de passe ne sont pas identiques".  
 
2) lorsque je tape dans ancien mot de passe un mot de passe bidon, et que je remplis le reste correctement, il me met "votre mot de passe a bien été modifié" alors que quand je me reconnecte, il n'a pas prit la modification. En gros, il ne m'informe pas que ancien mot de passe est différent de ce que j'avais écrit.
 
Je ne sais pas si j'ai bien été claire, si vous avez des questions, n'hésitez pas !
Merci de bien vouloir m'aider !


Message édité par iOniOn95 le 23-03-2011 à 14:30:19
Reply

Marsh Posté le 23-03-2011 à 11:00:24   

Reply

Marsh Posté le 24-03-2011 à 15:57:41    

Bonjour,
- Avec la 1ère IF, bien sûr que vous avez directement "veuillez remplir tous les champs le formulaire" parce que isset($_POST) == false
 
- 2è IF, la condition est: $new_pass == $new_pass2 , ça dit rien au niveau de l'ancien mot de passe, vous rentrez ou rentrez pas l'ancien mot de passe, la phrase affiche en fonction du test $new_pass == $new_pass2
 
Corrigez vous des erreurs, et refaites des tests, je ne vois rien du tout des fautes MySQL :) ou ma connaissance est ...

Reply

Marsh Posté le 24-03-2011 à 16:23:35    

Bonjour, merci de ta réponse quanph021184 !
Cependant, je ne sais pas comment dire : 'Si un des champs est vide, Alors afficher "Veuillez remplir tous les champs" '
De plus, je ne sais pas comment dire et ou placer le code : 'Si l'ancien mot de passe tapé est différent de l'ancien mot de passe actuel, alors afficher "mot de passe incorrecte" '.
 
Sinon, le code ne contient aucune fautes, il fonctionne parfaitement, il y a juste quelques incohérences que je n'arrive pas à corriger :)

Reply

Marsh Posté le 24-03-2011 à 17:17:02    

bon, vous nommer le bouton submit, et ajoutez isset($_POST['nom_bouton_submit'] au debut, pour faire un test si on clique sur le bouton ou pas encore.
oubliez pas des tests si des champs =="", j'ai un petit conseil: écrivez vous le schéma avant écrire des codes :D ça peut appliquer pour tous les langages et ça va vous donner une bonne habitude :)  
Après, je pense que vous allez le faire vous même :D

Reply

Marsh Posté le 25-03-2011 à 09:34:17    

Ok merci, je vais tester ça!

Reply

Marsh Posté le 25-03-2011 à 09:46:10    

Tout fonctionne, j'ai remplacé : if($new_pass == $new_pass2 && $old_pass)  par  if($new_pass == $new_pass2 && $old_pass == $_SESSION['password']) !
Merci pour ton aide =)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed