J'ai décidé de passer mes requêtes qui étaient en MySQLi-Prepared en PDO.
Mais j'ai un sérieux souci au niveau de la requête de mise à jour des Mots de passe représentée par la fonction "modifyPass()" (du Fichier processUser.php) qui n'applique pas la nouvelle modification de Mot de Passe dans la Base de Données et aucune erreur non plus n'est signalée et pourtant j'arrive à modifier avec succès les Emails grâce à sa fonction modifyEmail().
Code : Tout sélectionner
function dbQuery($sql)
{
$args = func_get_args();
if($args != null){
array_shift($args);
/* if(is_array($args) && count($args) === 1){
$tab = $args[0];
$args = (is_array($args)) ? $tab : array($tab);
}*/
}
$db = new MySQL();
$result = ($args != null) ? $db->query($sql,$args) : $db->query($sql);
return $result;
}
/*
Modify a user
*/
function modifyEmail()
{
$userId = (int)$_POST['hidUserId'];
$new_email = $_POST['new_email'];
$sql = "UPDATE tbl_users
SET email = ?
WHERE id = ?";
dbQuery($sql,$new_email,$userId);
header('Location: index.php?view=email&error=' . urlencode('Email modifié avec succès.'));
}
/*
Modify a Password
*/
function modifyPass()
{
$userId = (int)$_POST['hidUserId'];
$new_password = $_POST['new_password'];
$sql = "UPDATE tbl_users
SET pwd = ?
WHERE id = ?";
$new_pwd_hash = hash('sha512',$new_password); // hash512
dbQuery($sql,$new_pwd_hash,$userId);
$userEmail = "SELECT email FROM tbl_users WHERE id = ?";
$result = dbQuery($userEmail,$userId);
extract(dbFetchAssoc($result));
$subject = "Mot de passe modifié";
$mail_data = array('to' => $email, 'sub' => $subject, 'msg' => 'change_pwd', 'pwd' => $pwd);
send_email($mail_data);
}Code : Tout sélectionner
<form action="processUser.php?action=modifyPass" method="post" >
<table width="500px" border="0" align="center" cellpadding="5" cellspacing="1" class="entryTable">
<tr>
<td colspan="2" class="label">Modifier le Mot de Passe </td>
</tr>
<tr>
<td width="150" class="label">Nom d'utilisateur</td>
<td class="content">
<input name="txtUserName" type="text" class="box" id="txtUserName" value="<?php echo $fname. ' '.$lname; ?>" size="30" readonly="readonly">
<input name="hidUserId" type="hidden" id="hidUserId" value="<?php echo $id; ?>"> </td>
</tr>
<tr>
<td width="150" class="label">Nouveau Mot de Passe</td>
<td class="content">
<span id="sprypwd">
<input name="new_password" type="password" class="box" id="pass" size="30">
<br/>
<span class="passwordRequiredMsg">Nouveau Mot de Passe obligatoire.</span>
<span class="passwordMinCharsMsg">Vous devez spécifier au moins 6 caractères.</span>
<span class="passwordMaxCharsMsg">Vous devez spécifier au plus 10 caractères.</span>
</span>
</td>
</tr>
<tr>
<td width="150" class="label">Confirmer</td>
<td class="content">
<span id="sprycpwd">
<input name="new_password" type="password" class="box" id="pass" size="30">
<small> </small>
<br/>
<span class="confirmRequiredMsg">Confirmer Nouveau Mot de Passe.</span>
<span class="confirmInvalidMsg">Les valeurs du mot de passe de confirmation ne correspondent pas.</span>
</span>
</td>
</tr>
<tr>
<td width="150"> </td>
<td width="10"> </td>
<td> </td>
</tr>
<tr>
<td colspan="3"><div align="center">
<input name="btnModify" type="submit" class="bluebox" id="btnModify" value="Valider" onClick="return checkPassword();">
</div></td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
</table>
</form>Aidez-moi donc à corriger ce qui semble ne pas fonctionner au niveau de la fonction modifyPass() qui traite le changement des Mots de Passe car le changement ne s'applique pas du tout.
Merci d'avance.