[PHP] Changer de mot de mot de passe

Résolu
YoshK Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -  
YoshK Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -
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"); 
?>
A voir également:

4 réponses

le père
 
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   Statut Membre Dernière intervention   1
 
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
le père
 
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   Statut Membre Dernière intervention  
 
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