Changer le mot de passe d'un membre

Résolu/Fermé
valens1460 Messages postés 33 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 16 octobre 2015 - Modifié par baladur13 le 21/05/2015 à 10:20
 Utilisateur anonyme - 21 mai 2015 à 11:29
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
21 mai 2015 à 10:51
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 vendredi 13 février 2015 Statut Membre Dernière intervention 16 octobre 2015
21 mai 2015 à 10:55
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
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 vendredi 13 février 2015 Statut Membre Dernière intervention 16 octobre 2015
21 mai 2015 à 11:06
ç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 vendredi 13 février 2015 Statut Membre Dernière intervention 16 octobre 2015
21 mai 2015 à 11:16
vu que c'est une méthode post, comment fait tu pour voir les echo?
0
valens1460 Messages postés 33 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 16 octobre 2015
21 mai 2015 à 11:17
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
21 mai 2015 à 11:08
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 vendredi 13 février 2015 Statut Membre Dernière intervention 16 octobre 2015
21 mai 2015 à 11:10
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
21 mai 2015 à 11:21
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 vendredi 13 février 2015 Statut Membre Dernière intervention 16 octobre 2015
21 mai 2015 à 11:27
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
21 mai 2015 à 11:29
Pas de soucis, bon courage ;)
0