8791 sujets

Développement web côté serveur, CMS

Bonjour à tous, Smiley smile
Voilà j'ai voulu faire un petit formulaire afin que l'utilisateur puisse changer de mot de passe quand bon lui semble. Malheureusement, tout à l'air de bien fonctionner mais ma table ne se modifie pas. De plus comme vous pourrez le voir dans le code en dessous, ma variable $_SESSION['password'] se modifie bien mais pas ma table ... donc j'imagine que c'est dans le $sql=UPDATE ...qu'il y a une erreur sauf que je vois pas où Smiley ohwell
Merci de votre aide.

<div name="changmdp4" id="changmdp4" class="cachediv">

	<form method="post" action="">
		Mot de passe actuel : <input type="password" name="amdp" >
		Nouveau mot de passe : <input type="password" name="nmdp" >
		Verification mot de passe : <input type="password" name="vmdp" >
		<input type="submit" name="submit" value=" Envoyer ">
	</form>

	
	<?php
		$result=false;
		if(isset($_POST['submit'])){
		$amdp=$_POST['amdp'];
		$nmdp=$_POST['nmdp'];
		$vmdp=$_POST['vmdp'];
		$login=$_SESSION['login'];
			if (($amdp!='')&&($nmdp!='')&&($vmdp!='')) {
				if ($amdp==$_SESSION['password']){
					if($nmdp==$vmdp){
					$sql="UPDATE users SET password=$nmdp where login='$login'";
					$result=mysql_query($sql);
					echo 'Modification du mot de passe effectuee avec succes';
					$_SESSION['password']=$nmdp;
					} else {
						echo 'Erreur entre le nouveau mot de passe entr&eacute; et la verification';
					}
				} else {
					echo 'Le mot de passe actuel n\'est pas valide';
					}
			} else {
				echo 'Veuillez remplir tous les champs';
			}
		} else {
			echo 'Page de modification de mot de passe - special VIP';
		}
				
	?>
</div>

Modifié par Fer2Lance (16 Nov 2010 - 21:50)
Remplace tout ton bloc par :

$sql = 'UPDATE users SET password=\'toto\' where login=\'' . $_SESSION['login'] . '\''; 
$result=mysql_query($sql); 


Si cela ne marche pas tu sais alors que l’erreur ne vient pas du bloc que tu nous as présenté.

Quelques conseils :
Vérifie que le nouveau mot de passe comporte un nombre minimum de lettres ;
Enregistre dans ta base de données l’empreinte md5 du mot de passe plutôt que le mot de passe lui-même.
Ainsi même en piratant ta base de données, un intrus n’aura pas accès aux mots de passe. De plus la fonction md5 de php t’épargne de gérer les caractères «'» «"» et autres «\» qui dans le code que tu nous as montré pourraient causer des soucis.

Pour l’accessibilité, dans ton gabarit n’oublie pas de mettre à côté des input des balises label.
Modifié par adrien881 (16 Nov 2010 - 17:19)
Merci adrien881 de ta réponse.
J'ai essayé et effectivement ça marche. Mais malheureusement, quand je remplace toto par une variable, ça m'enregistre le nom de la variable , et pas ce qu'elle contient. Comment faire ? Smiley ohwell

Merci pour les conseils, je m'y plongerais quand tout ceci marchera nickel. Smiley smile
Voilà la réponse pour ceux qui le voudront :

$sql="UPDATE users SET password='$nmdp' WHERE login='$login'";
$result=mysql_query($sql);