Partage
  • Partager sur Facebook
  • Partager sur Twitter

Changer son mot de passe

Sujet résolu
    30 août 2006 à 21:37:39

    Voilà j'ai un petit problème avec un script que je viens de finir et qui me tire soucis :-°

    le voilà:

    <?
    session_start();

    if (isset($_SESSION['logged']) && $_SESSION['logged'] == true)
     {
      if (isset($_POST['ancienpass']) && isset($_POST['nouvpass']) && isset($_POST['confirmer']) && $_POST['ancienpass'] != NULL && $_POST['nouvpass'] != NULL && $_POST['confirmer'] != NULL)
       { 
    $ancien = htmlentities(md5($_POST['ancienpass']));
    $nouveau = htmlentities($_POST['nouvpass']);
    $confirmer = htmlentities($_POST['confirmer']);
    include("config.inc.php");
      mysql_connect($host, $username, $password);
      mysql_select_db($bdd_name);
     $rep = mysql_query("SELECT mot_passe FROM membres WHERE pseudo='".$_SESSION['pseudo']."'");
    $rep2 = mysql_fetch_array($rep);
    mysql_close();
       if ($rep2 == $ancien)
         {
          if ($nouveau == $confirmer)
           {
            $mdnouv = md5($nouveau);
            mysql_query("UPDATE membres set mot_passe='".$mdnouv."' WHERE pseudo='".$_SESSION['pseudo']."'");
    echo '<center>Mot de passe changé avec succès! <a href="index2">Retour</a></center>';       
          }
        else
        {
         echo '<center>Nouveau mot de passe est différent de la confirmation!<a href="changer.php">Recommencer</a></center>';
        }
     }
    else
    {
     echo '<center>Ancien mot de passe incorrect!<a href="changer.php">Recommencer</a></center>';
    }
    }
    else
    {
    echo '<center>Il manque un ou plusieurs champs. <a href="changer.php">Recommencer</a>';
    }
    }
    else
    {
     echo '<center>Connectez vous pour changer de pass! <a href="connexionp">Se connecter</a></center>';
    }
    ?>


    Je ne sais pas pourquoi mais dans tous les cas, ça va m'afficher "Ancien mot de passe incorrect!" même si il est egal à celui présent dans ma bdd :(
    Une petite aide si possible?
    • Partager sur Facebook
    • Partager sur Twitter
      30 août 2006 à 21:42:36

      Dans ton if (celui où tu test si l'ancien mot de passe est le bon), ne faudrait t'il pas mettre $rep2['mot_passe'] ??
      Parce que là, il test si un tableau (certe à une seule valeur) est égale à une variable.

      Edit: et contrairement à ce que dis Grout, tu n'as pas mis mysql_close trop tot... En fait, si, mais c'est pas là que ça foire, parce que ça t'enverrai une erreur du genre pas de connexion à mysql. Mais en effet, il faut fermer plus tard, parce que après, tu fait encore des requête.
      • Partager sur Facebook
      • Partager sur Twitter
        30 août 2006 à 21:42:54

        Tu as mis le mysql_close(); trop tot, tu peux faire aucune opération dessus apres, il faut le mettre apres, je dirais ici, et GreenPinguin a trouvé la deuxieme erreur :
        <?
        session_start();

        if (isset($_SESSION['logged']) && $_SESSION['logged'] == true)
         {
          if (isset($_POST['ancienpass']) && isset($_POST['nouvpass']) && isset($_POST['confirmer']) && $_POST['ancienpass'] != NULL && $_POST['nouvpass'] != NULL && $_POST['confirmer'] != NULL)
           {
        $ancien = htmlentities(md5($_POST['ancienpass']));
        $nouveau = htmlentities($_POST['nouvpass']);
        $confirmer = htmlentities($_POST['confirmer']);
        include("config.inc.php");
          mysql_connect($host, $username, $password);
          mysql_select_db($bdd_name);
         $rep = mysql_query("SELECT mot_passe FROM membres WHERE pseudo='".$_SESSION['pseudo']."'");
        $rep2 = mysql_fetch_array($rep);

           if ($rep2['mot_passe'] == $ancien)
             {
              if ($nouveau == $confirmer)
               {
                $mdnouv = md5($nouveau);
                mysql_query("UPDATE membres set mot_passe='".$mdnouv."' WHERE pseudo='".$_SESSION['pseudo']."'");
                        echo '<center>Mot de passe changé avec succès! <a href="index2">Retour</a></center>';       
              }
            else
            {
             echo '<center>Nouveau mot de passe est différent de la confirmation!<a href="changer.php">Recommencer</a></center>';
            }
                mysql_close();
         }
        else
        {
         echo '<center>Ancien mot de passe incorrect!<a href="changer.php">Recommencer</a></center>';
        }
        }
        else
        {
        echo '<center>Il manque un ou plusieurs champs. <a href="changer.php">Recommencer</a>';
        }
        }
        else
        {
         echo '<center>Connectez vous pour changer de pass! <a href="connexionp">Se connecter</a></center>';
        }
        ?>
        • Partager sur Facebook
        • Partager sur Twitter
          30 août 2006 à 21:44:35

          oui merci beaucoup ça fonctionne!
          De plus que j'avais oublier de mettre les crochets de ma variable qui renvoyait sur mysql_fetch_array
          • Partager sur Facebook
          • Partager sur Twitter

          Changer son mot de passe

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown