Page 1 sur 1

formulaire de modification de mot de passe

Posté : 04 mai 2012, 11:34
par pierre3401
Bonjour,

Je voudrais faire un formulaire de modification de mot de passe , mon formulaire html à cette forme:
<html>
<head>
<title>Changement du mot de passe</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../lien.css" rel="stylesheet" type="text/css">
</head>
<body marginheight="40" bgcolor="#ffffff" leftmargin="30">
<form action="modification_password.php" method="POST">
<center>
<table>
<tr>
	<td>
	<span class="style4">	Nouveau mot de passe : <input type="password" name="new_pass"> </span>


</td>
	<td>
	<tr>
	<td>
	<span class="style4">confirmation : <input type="password" name="new_pass_conf"></span>
	</td>
	</tr>
	
<tr>
	<td>
	<span class="style4">Ancien mot de passe : <input type="password" name="pass_old"></span>
	</td>
	</tr>

<tr><td height="16"></td></tr>
</table>

<input name="valider" type="submit" value="Enregistrer">
</form>
</body>
</html>
et donc, mon fichier modification_password.php reprends ce code:
<?php
// connection à la base
include ("../connect_base.php");
// on verifie qui est loggé
session_start();
$login=$_SESSION["login"];

// on recupère les données du formulaire
$new_pass=$_POST["new_pass"];
$new_pass_conf=$_POST["new_pass_conf"];
$pass_old=$_POST["pass_old"];
// on récupère l'ancien mot de passe dans la bdd
$sql = mysql_query("SELECT password FROM individu WHERE identifiant= ' $login ' ");
list($password) = mysql_fetch_array($sql);

// on compare si le nouveau passe correspond à la confirmation
if ($new_pass == $new_pass_conf)
{
      //on vérifie si iles anciens mots de passe sont identique
    if ($password == $pass_old)
    {
        //si oui on update le nouveau mot de passe dans la bdd

         $sql =  "update individu SET password = '".$new_pass."' WHERE identifiant = ' $login ' ";
		 
        echo "mot de passe change cher $login "; // là j'ai mis la variable $login pour vérifier que c'est bien la bonne personne à qui on s'adresse...
		
    }
    else
    {
        echo "Ancien mot de passe non valide";
    }
}
else
{
    echo "Mot de passe de confirmation incorrecte";
}
?>
Mais ca ne fonctionne pas, quoi que je fasse, j'ai le message me disant que mon mdp à été changé, en plus rien ne se passe dans la bdd...

Bref, au secours !!

Merci d'avance,

Re: formulaire de modification de mot de passe

Posté : 04 mai 2012, 14:02
par Mazarini
Il faut exécuter la requete de maj. Il manque un mysql_query($sql)

Il manque également un test de mysql_affected_row() (de mémoire) pour vérifier que l'update a modifié une ligne.

Tu pourras également essayer avec un mot de passe qui contient une quote pour voir ce qui se passe... C'est un test à faire systématiquement l'utilisation de ' ou de " dans les zones de saisie.

Re: formulaire de modification de mot de passe

Posté : 04 mai 2012, 16:15
par pierre3401
???

Je n'ai pas tout compris...

tu me dis : Il faut exécuter la requete de maj. Il manque un mysql_query($sql)

pourtant, j'ai dans mon script:
$sql = mysql_query("SELECT password FROM individu WHERE identifiant= ' $login ' ");

pour le rest, je ne suis qu'un umble débutant :D et là, j'avous n'avoir rien compris...

Re: formulaire de modification de mot de passe

Posté : 04 mai 2012, 17:19
par sam12
Il parle du update:
$sql =  "update individu SET password = '".$new_pass."' WHERE identifiant = ' $login ' ";
                 
        echo "mot de passe change cher $login "; // là j'ai mis la variable $login pour vérifier que c'est bien la bonne personne à qui on s'adresse...
Il manque le mysql_query.

Mais tu hashes pas les pass? :shock:

Re: formulaire de modification de mot de passe

Posté : 04 mai 2012, 19:55
par pierre3401
Non je ne hashe pas pour le moment... je debute tout de même :)
Je ne comprends pas, je dois repeter le code msql_query lors de l'update ?

Re: formulaire de modification de mot de passe

Posté : 04 mai 2012, 20:25
par sam12
Si tu fais un
$sql =  "update individu SET password = '".$new_pass."' WHERE identifiant = ' $login ' ";
Sans donner l'ordre d’exécuter la requête (mysql_query), comment veux-tu que ça lance la requête?

Re: formulaire de modification de mot de passe

Posté : 05 mai 2012, 15:24
par pierre3401
Ok j'ai trouvé :)
Mais même avec le msql_querry ca ne modifiait pas la bdd.
En fait j'avais un espace entre l'accent et ma variable $login...
Maintenant ca fonctionne merci

Question: recherche dans une base de données par mot clé

Posté : 07 mai 2012, 03:38
par Yasmine
Bonjour tout le monde,
je développe un site, j'ai créé un formulaire pour la recherche dans la base de donnée par MOT CLÉ, et j'ai crée une table dans une base de données MySQL.
Je cherche un script en PHP qui fait la connexion à ma base de données et un autre qui recherche la données dans ma base de données par les mots clés tapés par mon visiteur.

Merci

Re: formulaire de modification de mot de passe

Posté : 24 janv. 2015, 13:59
par camlec
Bonjour !
J'essaye de mettre en place un formulaire de changement de mot de passe dans mon espace membre, mais je reste bloquée depuis plusieurs jours... En effet, la page ne me renvoie pas d'erreur mais me dit, peut importe ce que j'entre, que la combinaison de ce login et de ce mot de passe n'existe pas dans la base de données. Voici mon code :

Code : Tout sélectionner

[html] <form method="POST" action="testmodifmdp.php"> <input type="text" label="Identifiant" name="login" placeholder="Entrez votre identifiant"> <br/> <input type="password" label="Mot de passe" name="passA" placeholder="Ancien mot de passe"> <br/> <input type="password" label="Mot de passe" name="passN1" placeholder="Nouveau mot de passe"> <br/> <input type="password" label="Mot de passe" name="passN2" placeholder="Confirmation du nouveau mdp"> <br/> <input type="submit" name="enregistrer" value="Connexion"> </form> [/html] [php] <?php if(isset($_POST['enregistrer'])){ $passA=$_POST['passA']; $passN1=$_POST['passN1']; $passN2=$_POST['passN2']; $login=$_POST['login']; if (($passA!='')&&($passN1!='')&&($passN2!='')){ // on vérifie qu'aucun mot de passe n'est vide if($passN1==$passN2){ // on vérifie que le nouveau mdp et sa confirmation correspondent if((strlen($passN1)>5)&&(strlen($passN1))<16){ // on vérifie que le mot de passe fait entre 6 et 15 caractères // on récupère le(s) utilisateur(s) dont le login et le mdp correspondent au login et l'ancien mdp entré $q="SELECT * FROM utilisateurs WHERE login='$login' AND mdp='$passA'"; $res=$connect->query($q); $data=mysqli_fetch_array($res); if($data->num_rows!=0){ // s'il y a une réponse $q2="UPDATE utilisateurs SET mdp='$passN1' WHERE login='$login' AND mdp='$passA'"; // on modifie le mdp $res2=$connect->query($q2); if($res2){ echo "Modification du mot de passe effectuée avec succès"; } else if($connect->error){ echo "La modification a échoué : ".$connect->error; } } else { // s'il n'y a pas d'utilisateur dont le login & le mdp rentrés correspondent echo "La combinaison de cet identifiant et de ce mot de passe n'existe pas. Veuillez réessayer."; } } else { // si le mot de passe fait entre 6 et 15 caractères echo "Le nouveau mot de passe doit contenir entre 6 et 15 caractères."; } } else { // si le nouveau mdp et sa confirmation ne correspondent pas echo "Erreur entre le nouveau mot de passe entré et la vérification"; } } else { // si un des champs est vide echo "Vous devez remplir les champs ci-dessus."; } } ?> [/php]
Quelqu'un pourrait-il m'aider ?
D'avance merci.

Re: formulaire de modification de mot de passe

Posté : 24 janv. 2015, 16:50
par tof73
cela devrait aller mieux avec :
if($res->num_rows == 1){ // s'il y a une réponse
$data=mysqli_fetch_array($res);