Modification mot de passe PHP

Résolu/Fermé
shoub-tcy Messages postés 169 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 23 mai 2012 - 17 mars 2012 à 18:06
shoub-tcy Messages postés 169 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 23 mai 2012 - 18 mars 2012 à 00:19
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

Hyperbidule Messages postés 54 Date d'inscription samedi 14 janvier 2012 Statut Membre Dernière intervention 22 mars 2012 10
17 mars 2012 à 18:39
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
shoub-tcy Messages postés 169 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 23 mai 2012 2
17 mars 2012 à 18:48
Il me renvoit exactement la même erreur :s
0
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
shoub-tcy Messages postés 169 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 23 mai 2012 2
17 mars 2012 à 20:44
Merci d'avoir répondu ReDLoG,
Il m'affiche encore la même erreur :s
0
Et en modifiant la syntaxe de la requête SQL :
$req = "SELECT password FROM formulaire WHERE password=".$password;
0
shoub-tcy Messages postés 169 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 23 mai 2012 2
17 mars 2012 à 20:57
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
Hyperbidule Messages postés 54 Date d'inscription samedi 14 janvier 2012 Statut Membre Dernière intervention 22 mars 2012 10
17 mars 2012 à 18:12
Il n'y pas de catch pour ton try.
0
Hyperbidule Messages postés 54 Date d'inscription samedi 14 janvier 2012 Statut Membre Dernière intervention 22 mars 2012 10
17 mars 2012 à 18:14
Rajoute :

catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
0
shoub-tcy Messages postés 169 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 23 mai 2012 2
17 mars 2012 à 18:26
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