Modification mot de passe PHP

Résolu
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. Il n'y pas de catch pour ton try.
    0
    1. Rajoute :

      catch (Exception $e)
      {
      die('Erreur : ' . $e->getMessage());
      }
      0
      1. 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
    2. 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. Il me renvoit exactement la même erreur :s
        0
      2. 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. Merci d'avoir répondu ReDLoG,
        Il m'affiche encore la même erreur :s
        0
      4. Et en modifiant la syntaxe de la requête SQL :
        $req = "SELECT password FROM formulaire WHERE password=".$password;
        0
      5. 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