Bonjour à tous
J'ai créé un petit site en PHP/MySQL, et je suis confronté à un souci.
Dans l'espace membre, j'ai une partie qui permet de modifier son mot de passe. Je récupère donc l'ancien mot de passe, puis les 2 nouveaux (il est répété pour éviter les erreurs de frappe, banal quoi).
Tout ceci est envoyé via POST a une page qui compare les deux chaînes $newpass et $newpass2, et qui redirige via un header("Location:fdsfds.php" ) sur la page précédente avec un petit message d'erreur.
Jusque là, rien d'extraordinaire...
Sauf que ça marche pas !
J'ai testé avec des echo, et il ne se gêne pas du tout pour valider la comparaison des deux mots de passe !!!
Je ne comprends pas...
J'ai fait la même chose pour l'inscription, et il valide celle-ci même si le deuxième champ de password est vide
ci-joint le code correspondant :
La page html avec le formulaire :
Code :
- echo '<table><form method = "POST" action = "changepass.php">
- <tr>
- <td><p>Mot de passe actuel :</td><td><input type = "password" name = "oldpass"></p></td>
- </tr><tr>
- <td><p>Nouveau mot de passe :</td><td><input type = "password" name = "newpass"></p></td>
- </tr><tr>
- <td><p>Répéter :</td><td><input type = "password" name = "newpass2"></p></td>
- </tr><tr>
- <td><p><input type = "submit" value = "Changer mon Mot de Passe"></p></td><td></td>
- </tr>
- </form></table>';
|
Et voici la page qui récupère les données :
Code :
- //on récupère les données
- $oldpass = $_POST['oldpass'];
- $newpass = $_POST['newpass'];
- $newpass2 = $_POST['newpass2'];
- /*echo 'pass1 : '.$newpass.'<br>';
- echo 'pass2 : '.$newpass2.'<br>';*/
- if ($newpass == "" ){
- header("Location:account.php?pv=1" );
- }
- if ($newpass != $newpass2) {
- header("Location:index.php" );
- }
- $sql = mysql_query("SELECT password FROM ".$mysql_prefix."accounts WHERE id = ".$_SESSION['id']."" ) or die(mysql_error());
- $verifmdp = mysql_fetch_array($sql);
- if (md5($oldpass) != $verifmdp['password']) {
- header("Location:account.php?mp=1" );
- } else {
- $newpassword = md5($newpass);
- mysql_query("UPDATE accounts SET password = '".$newpassword."' WHERE id = '".$_SESSION['id']."' " ) or die(mysql_error());
- header("Location:account.php?p=1" );
- }
|
Y a t'il un souci dans ma comparaison ? Il me semblait qu'un simple == suffirait mais apparemment non...Il me semblait aussi qu'une redirection par header stoppait le traitement du fichier...Le problème pourrait-il venir de là ? Dois-je mettre l'update de la bdd en conditionnelle [mot de passes identiques] ?
Merci de vos réponses et aides