Modification mot de passe PHP [Résolu/Fermé]

Signaler
Messages postés
169
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
23 mai 2012
-
Messages postés
169
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
23 mai 2012
-
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

Messages postés
54
Date d'inscription
samedi 14 janvier 2012
Statut
Membre
Dernière intervention
22 mars 2012
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
169
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
23 mai 2012
2
Ha il y a du progrès, l'erreur catch ne s'affiche plus mais il y a 2 autres erreurs qui s'affichent sur cette ligne : $res = $bdd->query($req);

-( ! ) Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'motdepasse1' in 'where clause'' in C:\Program Files\wamp\www\Site\Page6\modif_compte.php on line 17

-( ! ) PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'motdepasse1' in 'where clause' in C:\Program Files\wamp\www\Site\Page6\modif_compte.php on line 17
Donne la structure de la table utilisée par la requête...
Messages postés
169
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
23 mai 2012
2
Tu veux dire les élément que j'ai dans phpmyadmin?
id, nom, prénom, pseudo, e_mail, password, adresse, cp, ville, région, tel, date_naij, date_naim, date_naia, cle, actif
Essaie de remettre la syntaxe de la requête à l'origine comme ceci :
$req = "SELECT password FROM formulaire WHERE password='".$password."'";

Sinon je ne vois pas ce qui cloche pour provoquer l'erreur PDO...?
Messages postés
169
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
23 mai 2012
2
C'est bon c'est résolu!!! C'était effectivement ça :)
Mercii ReDLoG
Messages postés
54
Date d'inscription
samedi 14 janvier 2012
Statut
Membre
Dernière intervention
22 mars 2012
10
Il n'y pas de catch pour ton try.
Messages postés
54
Date d'inscription
samedi 14 janvier 2012
Statut
Membre
Dernière intervention
22 mars 2012
10
Rajoute :

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