Modification mot de passe PHP

Résolu
shoub-tcy Messages postés 173 Statut Membre -  
shoub-tcy Messages postés 173 Statut Membre -
Bonjour,

J'ai essayer de créer un formulaire qui permet aux membres de mon site de modifier leurs information personnelles comme par exemple leur mot de passe. Ce formulaire ammène à une page de traitement des informations rentrées par le membre. Le problème est qu'une erreur s'affiche. Voici mon code :

<!DOCTYPE html>

<?php
// le membre a rentrer son ancien mot de pass ($password)
// il a ensuite rentré son nouveau mot de passe ($new_pw)
// il a confirmé son nouveau mot de passe ($confirm_new_pw)
$password = $_POST['password'];
$new_pw = $_POST['new_pw'];
$confirm_new_pw = $_POST['confirm_new_pw'];

try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=sitesql', 'root', '', $pdo_options);
}

// je vérifie si le mot de passe rentré existe.
$req = "SELECT password FROM formulaire WHERE password='".$password."'";

$res = $bdd->query($req);
foreach($res as $row)
{
$password = $row['password'];
}

// si le mot de passe entré existe, je le remplace par le nouveau mot de passe
if ($password != NULL){

$req = $bdd->prepare('UPDATE formulaire SET password = :new_pw WHERE password like :password');
$req->execute(array(
'new_pw' => $new_pw,
'password' => $password,
));
}
?>

L'erreur qui s'affiche à la dernière ligne est la suivante : ( ! ) Parse error: syntax error, unexpected ';', expecting T_CATCH in C:\Program Files\wamp\www\Site\Page6\modif_compte.php on line 34

Si vous remarquez des erreurs, n'hesitez pas à me le faire parvenir.

Cordialement.

3 réponses

  1. Hyperbidule Messages postés 60 Statut Membre 10
     
    Fais plutôt comme ceci :
    try
    {
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=sitesql', 'root', '', $pdo_options);
    }
    catch (Exception $e)
    {
    die('Erreur : ' . $e->getMessage());
    }

    // je vérifie si le mot de passe rentré existe.
    $req = "SELECT password FROM formulaire WHERE password='".$password."'";

    $res = $bdd->query($req);
    foreach($res as $row)
    {
    $password = $row['password'];
    }

    // si le mot de passe entré existe, je le remplace par le nouveau mot de passe
    if ($password != NULL){

    $req = $bdd->prepare('UPDATE formulaire SET password = :new_pw WHERE password like :password');
    $req->execute(array(
    'new_pw' => $new_pw,
    'password' => $password,
    ));
    }
    ?>
    1
    1. shoub-tcy Messages postés 173 Statut Membre 2
       
      Il me renvoit exactement la même erreur :s
      0
    2. ReDLoG
       
      Bonsoir,
      Remplace cette ligne :
      $req->execute(array('new_pw' => $new_pw, 'password' => $password,));

      Par celle-ci :
      $req->execute(array('new_pw' => $new_pw, 'password' => $password));
      0
    3. shoub-tcy Messages postés 173 Statut Membre 2
       
      Merci d'avoir répondu ReDLoG,
      Il m'affiche encore la même erreur :s
      0
    4. ReDLoG
       
      Et en modifiant la syntaxe de la requête SQL :
      $req = "SELECT password FROM formulaire WHERE password=".$password;
      0
    5. shoub-tcy Messages postés 173 Statut Membre 2
       
      Désolé mais il m'affiche toujours cette fichue erreur : ( ! ) Parse error: syntax error, unexpected T_CATCH in C:\Program Files\wamp\www\Site\Page6\modif_compte.php on line 14
      0
  2. Hyperbidule Messages postés 60 Statut Membre 10
     
    Il n'y pas de catch pour ton try.
    0
  3. Hyperbidule Messages postés 60 Statut Membre 10
     
    Rajoute :

    catch (Exception $e)
    {
    die('Erreur : ' . $e->getMessage());
    }
    0
    1. shoub-tcy Messages postés 173 Statut Membre 2
       
      Merci d'avoir répondu hyperbidule.
      J'ai rajouté ce que tu m'as dis mais toujours une erreur, cette fois-ci à la ligne catch (Exception $e) :
      -( ! ) Parse error: syntax error, unexpected T_CATCH in C:\Program Files\wamp\www\Site\Page6\modif_compte.php on line 32.

      Voici mon code avec ce que tu m'as dis :

      try
      {
      $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
      $bdd = new PDO('mysql:host=localhost;dbname=sitesql', 'root', '', $pdo_options);
      }

      // je vérifie si le mot de passe rentré existe.
      $req = "SELECT password FROM formulaire WHERE password='".$password."'";

      $res = $bdd->query($req);
      foreach($res as $row)
      {
      $password = $row['password'];
      }

      // si le mot de passe entré existe, je le remplace par le nouveau mot de passe
      if ($password != NULL){

      $req = $bdd->prepare('UPDATE formulaire SET password = :new_pw WHERE password like :password');
      $req->execute(array(
      'new_pw' => $new_pw,
      'password' => $password,
      ));
      }
      catch (Exception $e)
      {
      die('Erreur : ' . $e->getMessage());
      }
      ?>
      0