par
chegmarco » 27 janv. 2022, 03:13
Bonjour.
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);
}
Et voici son le Code du Formulaire HTML traitant la modification des Mot s de passe qui ne marche pas du tout:
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>
Pourquoi donc le changement des Mots de passe de ma requête
modifyPass() ne fonctionne toujours pas malgré mes nombreuses tentative à corriger ce bug alors que se modifie avec succès le changement des Emails ???
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.
Bonjour.
J'ai décidé de passer mes requêtes qui étaient en [B]MySQLi-Prepared[/B] en [B]PDO[/B].
[B]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()"[/B] (du Fichier [B]processUser.php[/B]) [u]qui n'applique pas la nouvelle modification de Mot de Passe dans la Base de Données[/u] et aucune erreur non plus n'est signalée et pourtant j'arrive à modifier avec succès les Emails grâce à sa fonction [B]modifyEmail()[/B].
[CODE]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]
Et voici son le Code du Formulaire HTML traitant la modification des Mot s de passe qui ne marche pas du tout:
[CODE]<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>[/CODE]
Pourquoi donc le changement des Mots de passe de ma requête [B]modifyPass()[/B] ne fonctionne toujours pas malgré mes nombreuses tentative à corriger ce bug alors que se modifie avec succès le changement des Emails ???
Aidez-moi donc à corriger ce qui semble ne pas fonctionner au niveau de la fonction [B]modifyPass()[/B] qui traite le changement des Mots de Passe car le changement ne s'applique pas du tout.
Merci d'avance.