[PHP] Changer de mot de mot de passe

Résolu/Fermé
YoshK Messages postés 26 Date d'inscription samedi 21 mars 2009 Statut Membre Dernière intervention 16 mars 2011 - 2 juin 2009 à 16:33
YoshK Messages postés 26 Date d'inscription samedi 21 mars 2009 Statut Membre Dernière intervention 16 mars 2011 - 2 juin 2009 à 17:40
Bonjour,
j'essaie de réaliser un script qui permettra aux utilisateurs de changer leur mot de passe une fois connectées.
Le problème est qu'à l'envoie du formulaire, même si le message affiché est "votre mot de passe a été modifié avec succès !", le mot de passe inséré dans la BDD a une valeur null.

<?php 
	include("base.php");
	include("entete.php");
	$message = "";
if (isset($_POST['ancienMdp']) && isset($_POST['nouveauMdp']) && isset($_POST['confirmNouveauMdp']))
{
	$pseudo = $_SESSION['pseudoKey'];
	$ancienMdp = md5($_POST['ancienMdp']);
	$nouveauMdp = $_POST['nouveauMdp'];
	$confirmNouveauMdp = $_POST['confirmNouveauMdp'];
	if ( $nouveauMdp == $confirmNouveauMdp)
	{
		$existe = "SELECT * FROM utilisateur WHERE mdp = '".$ancienMdp."' AND pseudo = '".$pseudo."'";
		$result = mysql_query($existe) or die("Probleme avec la requete");
		if (mysql_num_rows($result) == 1)
		{
			if (strlen($nouveauMdp) < 5)
				$message = "Le nouveau mot de passe est trop court.<br/>";
			else if (strlen($nouveauMdp) > 20)
				$message .= "Le nouveau mot de passe est trop long.<br/>";
			else
				$mdp = md5($nouveauMdp);
				mysql_query("UPDATE utilisateur SET mdp='".$mdp."' WHERE pseudo='".$pseudo."'");
				$message = "votre mot de passe a été modifié avec succès !";
		}
		else 
			$message = "mot de passe incorecte";
	}
	else
		$message = "Votre nouveau mot de passe ne corespond pas avec sa confirmation";
}
else
{
	$message = "Tous les champs sont obligatoires.";
}
echo $message;
?>

<form method="POST" action="changerMdp.php">
	<table>
	<caption><strong style="color:red;">Changement du mot de passe</strong></caption>
	<tr>
	<td>
	Entrez votre ancien mot de passe:
	</td>
	<td>
	<input type="text" size="30" name="ancienMdp" value="" />
	</td>
	</tr>
	<tr>
	<td>
	Entrez votre nouveau mot de passe:
	</td>
	<td>
	<input type="text" size="30" name="nouveauMdp" value="" />
	</td>
	</tr>
	<tr>
	<td>
	Confirmez votre nouveau mot de passe:
	</td>
	<td>
	<input type="text" size="30" name="confirmNouveauMdp" value="" />
	</td>
	</tr>
	<tr>
	<td colspan=2>
	<input type="submit" value="envoyer"/>
	</td>
	</tr>
	</table>
	</form>
<?php
	include("piedDePage.php"); 
?>

4 réponses

Bonjour

Tu as (au moins) 2 problèmes :
Dans la requête de mise à jour tu utilises $mdp alors que c'est $nouveauMdp
Il te manque des { } après le else de la mise à jour, seule la 1ère ligne est soumise au else
0
Nirvv Messages postés 25 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 13 juin 2009 1
2 juin 2009 à 16:52
Pour le 1er probleme , il a fait juste avant l'update : $mdp = md5($nouveauMdp);
Donc je pense pas que ça soit vraiment un problème (a part que ça devient moins clair que de faire le "md5" tout de suite avec $nouveauMdp).

Et en effet sinon il manque les accolades { } au else de la requete "update". ^^'
0
pardon, encore lu trop vite... Bien sûr que le $mdp n'est pas un problème.
Mais du coup, ça n'explique pas son mot de passe NULL, sauf problème de longueur mais je suppose (?) qu'il a testé avec des mots de longueur correcte
0
YoshK Messages postés 26 Date d'inscription samedi 21 mars 2009 Statut Membre Dernière intervention 16 mars 2011
2 juin 2009 à 17:40
le problème étais effectivement dut aux accolades... (30 minutes à bloquer devant ce petit bout de codes -_-') merci de vos réponses rapides (peut être un peu trop :p)
0