Changer le mot de passe d'un membre

Résolu
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour, voilà comme dis dans le titre je veux changer le mot de passe d'un membre mais cela ne fonctionne pas, j'ai tester mes if, eux fonctionne, donc se serais dans le SQL mais il me semble bon, donc je ne vois pas ou pourrais être mon erreur, si quelq'un à une idée?
voici le formulaire:

<section>
   <fieldset><legend>Changement du mot de passe</legend><br>
    <form action="change_mdp_post.php" method="post">

    Pseudo :<input name="pseudoCh" id="pseudo" type="text" />
    <br/><br/>

    Mot de passe :<input name="passCh" type="password" />
    <br/><br/>

    nouveau mot de passe :<input name="nvMdp" type="password" />
    <br/><br/>

    confirmation du nouveau mot de passe :<input name="confirmMdp" type="password" />
    <br/><br/>

    <input type="submit" value="Changer son mot de passe" /> <input type="reset" value="Réinitialiser le formulaire" />
    </form>

    <br>
   </fieldset>
   <a href="membre.php">Retour à la page membre</a>
  </section>


et voici mon traintement

<?php
 session_start();


  if(($_POST["pseudoCh"]) || ($_POST["passCh"]) || ($_POST["nvMdp"]) || ($_POST["confirmMdp"]))
  {

   if(($_SESSION['login']) == ($_POST['pseudoCh']))
   {

    if ( ($_POST["confirmMdp"]) == ($_POST["nvMdp"]) )
    {
     try
     {
      $bdd = new PDO('mysql:host=sql2.olympe.in;dbname='*****', '*****', '******');
     }
     catch(Exception $e)
     {
       die('Erreur : '.$e->getMessage());
     }
     $req = $bdd->prepare(UPDATE membre SET pass_md5=  '.$_POST["passCh"].'  WHERE login = '. $_SESSION["login"]');
     $req->execute(array($_POST["passCh"]));
     header ('Location: change_mdp.php');
    }else
    {
     header ('Location: membre.php');
    }


   }else
   {
    header('Location: index.php');
   }
  }else
  {
   header('Location: Forum.php');
  }
?>
A voir également:

5 réponses

Utilisateur anonyme
 
Salut salut,

La première chose qui doit empêcher l'exécution est à cette ligne :
$bdd = new PDO('mysql:host=sql2.olympe.in;dbname='*****', '*****', '******');

Pour le premier paramètre tu ouvres avec une simple cote et les réutilises pour passer le nom de la base de donnée, donc la chaine de texte ne se ferme pas au bon endroit. Essaie comme ça :
$bdd = new PDO('mysql:host=sql2.olympe.in;dbname=*****', '*****', '******');

0
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
désolé c'est moi en métant les "*" qui a fait ça, mais pas dans mon code chez moi, donc le problème est bien ailleurs, désolé pour la faute de copie :s
0
Utilisateur anonyme
 
Ok, il y a une autre faute de cote ici :
$req = $bdd->prepare(UPDATE membre SET pass_md5=  '.$_POST["passCh"].'  WHERE login = '. $_SESSION["login"]');


Les instruction SQL doivent être entourées de cotes :
$req = $bdd->prepare('UPDATE membre SET pass_md5='.$_POST["passCh"].'  WHERE login = '. $_SESSION["login"]);


Résolu? ===> [RESOLU]
0
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
ça avance, effectivement il me remet bien a la bonne page, mais il ne change pas le mot de passe, et la ça fait 2 jours que je me bas sur le SQL
0
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
vu que c'est une méthode post, comment fait tu pour voir les echo?
0
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
Comme ceci?


if ( ($_POST["confirmMdp"]) == ($_POST["nvMdp"]) )
{
echo"juste apres le if de confirm";
try
{
$bdd = new PDO('mysql:host=sql2.olympe.in;dbname=2sf7gi5g', '2sf7gi5g', 'berderochet69');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
echo "juste avant le SQL";
$req = $bdd->prepare('UPDATE membre SET pass_md5='.$_POST["passCh"].' WHERE login = '. $_SESSION["login"]);
$req->execute(array($_POST["passCh"]));
header ('Location: change_mdp.php');
0
Utilisateur anonyme
 
Tu n'as aucun message d'erreur ?

Fais des echo des paramètres de tes if juste avant de rentrer dans la condition pour comprendre laquelle bloque l'exécution.
0
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
tous mes if fonctionne vu qu'il me dirige bien a la bonne page, c'est le sql qui n'exécute pas correctement mais je vais essayer les echo
0
Utilisateur anonyme
 
La requête préparée me semble un peu étrange, tu prépares la requête en mettant directement les variables dans la chaîne.
Essaie avec ça :

$req = $bdd->prepare('UPDATE membre SET pass_md5= :passmd5 WHERE login = :login');
$req->bindParam(':passmd5', $_POST["passCh"], PDO::PARAM_STR);
$req->bindParam(':login',$_SESSION["login"], PDO::PARAM_STR);
$req->execute();
0
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
Un très grand merci, cela fonctionne maintenant, vraiment merci!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
Pas de soucis, bon courage ;)
0