[php] Script changer mot de passe [Résolu/Fermé]

Signaler
Messages postés
207
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
21 juillet 2009
-
 hickorie -
Bonjour,

Je souhaiterai créer un script en php/sql. qui me permettrai au clien de changer leur mot de passe.
Je réussis a créer le code mais je souhaiterai ajouter un message qui previent le membre si il s'est trompé en tappant son mot de passe (pas le le; "attention erreur de login....").

Mais pour sa il faudra demander a sql...

Voila la structure sur laquelle vous appuyez:
Ce qui est en gras pose pbm.
Je pose qu'il faut utiliser mysql_affected_rows() mais je doute.


if (mot de passe bdd=mot de post $_POST[pass])
{
mysql_query("UPDATE accounts SET password='$password' WHERE password='$password'");
}

else
}
echo "Attention votre mot de passe ne correspond pas a celui que vous avez définie lors de votre enregistrement."
}



24 réponses

Messages postés
409
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
5 décembre 2009
117
Euh... C'est quand même vachement simple là, t'as en tout et pour tout 12 lignes de code, si seulement tout pouvais être aussi simple...
Je te fais un piti résumé du tout
$result = mysql_query("SELECT mdp FROM ta_table WHERE login = 'login_testé'");
$result = mysql_fetch_array($result);
$mdp_base = $result['mdp'];
if ($mdp_base==$mdp_form)
{
   mysql_query("UPDATE accounts SET password='$mdp_form' WHERE password='$mdp_base'");
}

else
}
   echo "Attention votre mot de passe ne correspond pas a celui que vous avez définie lors de votre enregistrement."
}
4
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60480 internautes nous ont dit merci ce mois-ci

Messages postés
409
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
5 décembre 2009
117
OK j'ai compris ce que tu voulais faire :D !!!!!
Donc à priori si tu fais ce qui suis ça devrait marcher (je te met un GM de valeur GM+1 mais si c'est pas ça se sera pas dur à modifier)
<?php
$sqlserver = "x";
$sqluser = "x";
$sqlpass = "x";

$con = mysql_connect($sqlserver,$sqluser,$sqlpass);

mysql_select_db("table_compte", $con); //Changez pour le nom de la Base de donnée

$password = mysql_real_escape_string(htmlspecialchars($_POST['pass']));
$user = mysql_real_escape_string(htmlspecialchars($_POST['user']));

$sql = mysql_query("SELECT password,gm FROM accounts WHERE user = '$user'");
$result = mysql_fetch_array($sql);

$mdp_base = $result['password'];
$gm = $result['gm'];

if ($mdp_base==$password)
{

$gm++;
mysql_query("UPDATE accounts SET gm='$gm' WHERE user='$user'");

}
echo "Felicitation " . "<font color='FF0000'>" . $user . "</font>" . " vous êtes à présent GM ".$gm;
?>


Voilà je pense que c'est bon... une dernière chose, pour ton update tu avais entré WHERE password='$password'. Je te déconseille de faire cela car, comme cela est le cas dans 99,9% des cas, si tu laisses l'utilisateur choisir son mdp, plusieurs user pourront avoir le même mdp et donc tu feras plusieurs UPDATE ce qui pourrait de poser quelques légers soucis.

Donc voilà. Désolé de ne pas avoir compris ce que tu voulais faire plus tôt mais bon on y est arrivé pour finir
en espérant avoir de tes nouvelles si ça marche
Messages postés
207
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
21 juillet 2009
109
Merci de ta réponse.

Oui cela correspond a sa.

Donc tu viens de décrire ce que je veux faire.

Ma question est comment définir $mdp_base.

tu utilises une requête pour récupérer le mot de passe stocker dans la base du genre :
$result = mysql_query("SELECT mdp FROM TaTable WHERE login = 'LOGINUTILISATEUR'");
$row = mysql_fetch_array($result);
$mdp_base = $row[0];
Messages postés
409
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
5 décembre 2009
117
3 mois pour tester ;) ben dis donc il t'en faut du temps ^^

Content que ça marche :D même si je ne me rappelle absolument plus du tout de quoi ça parlait
Messages postés
10
Date d'inscription
mardi 1 avril 2008
Statut
Membre
Dernière intervention
1 avril 2008

Il faut des $ deavnt les variables
Messages postés
409
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
5 décembre 2009
117
Si je comprend bien, tu stockes le mot de passe et le login en clair dans la base (il y a mieux niveau sécurité mais la question n'est pas là) et quand l'utilisateur entrera son login et son mot de passe dans le formulaire, tu va faire une requète SQL pour chercher le mot de passe dans la base et le comparer avec celui entré dans le formulaire.
Si j'ai bien compris, donc, je te conseille de créer :
une variable $mdp_base où tu stockes le mot de passe de ta base
une variable $mdp_form = $_POST[pass];
et tu fais tout simplement :
if ($mdp_base==$mdp_form)
{
   mysql_query("UPDATE accounts SET password='$mdp_form' WHERE password='$mdp_base'");
}

else
}
   echo "Attention votre mot de passe ne correspond pas a celui que vous avez définie lors de votre enregistrement."
}
  
Messages postés
207
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
21 juillet 2009
109
Ton code est correct sa ne m'affiche aucune erreur.

Par contre sa ne modifie rien dans la bdd.

Sa tombe toujours sur le else.

J'avais fait quelque chose qui ressembler a sa, si en interrogeant la bdd sa redondé oui alors c'est correct.
Sa me faisait exactement la même erreur, sa ne changé en rien la bdd.

Je pense que le if qui pose le probleme (comme a chaque fois) car si j'enlève les condition la requête est réussi et le mot de passe est changer.
Messages postés
557
Date d'inscription
mercredi 26 mars 2008
Statut
Membre
Dernière intervention
23 avril 2015
64
Poste ton script complet, ca sera plus simple pour debbuguer ... ;)
Messages postés
207
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
21 juillet 2009
109
La page index.php

<html>
<title>Création de Compte</title>
<link href="fond.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
body {
background-image: url();
background-repeat: no-repeat;
}
.Style2 {color: #000000}
.Style3 {
color: #FF0000;
font-size: large;
}

-->
</style><body bgcolor="#000000">
<body text="#FFFFFF">

<form action="complete.php" method="post">
<p><center>
</p>
<div align="center">
<p class="fond">

Nom de Compte :<br>
<bold></bold>
<input type="text" name="user" />
<br>
<br>
Mot de Passe : <br>
<input type="password" name="pass" />
<br>
<br>
<input name="submit" type="submit" class="Style2" value="xx !" />
<br>
<br>
<input type="hidden" name="gmlvl" value="2" />

</div>
<p> </p>
</form>
</body>
</html>


la page complete.php

<html>
<title>Creation de Compte</title>
<link href="fond.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
body {
background-image: url();
background-repeat: no-repeat;
}
.Style2 {color: #000000}
.Style3 {
color: #FF0000;
font-size: large;
}

-->
</style><body bgcolor="#000000">
<body text="#FFFFFF">

<form action="complete.php" method="post">
<p><center>
</p>
<div align="center">
<p class="fond">
<br>


<?php
$sqlserver = "x";
$sqluser = "x";
$sqlpass = "x";

$con = mysql_connect($sqlserver,$sqluser,$sqlpass);

mysql_select_db("table_compte", $con); //Changez pour le nom de la Base de donnée

$password = mysql_real_escape_string(htmlspecialchars($_POST['pass']));


$result = mysql_query("SELECT gm, passord FROM accounts WHERE password = '$password'");
$result = mysql_fetch_array($result);
$mdp_base = $result['gm'];
if ($mdp_base==$password)
{

mysql_query("UPDATE accounts SET gm='3' WHERE password='$mdp_base'");

}
echo "Felicitation " . "<font color='FF0000'>" . $_POST['user'] . "</font>" . " vous a present GM
?>

</div>
<p> </p>
</form>
</body>
</html>
Messages postés
409
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
5 décembre 2009
117
Et la structure simplifiée de ta base de donnée stp
gm et password correspondent a quoi
Et le passord dans ta première requète SQL est-elle une faute de frappe ?
Messages postés
207
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
21 juillet 2009
109
gm= game membre

sql

la table c accouts dedans id, password gm
Messages postés
409
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
5 décembre 2009
117
En fait je ne comprend plus très bien ce que tu veux : je croyais que tu voulais que les utilisateur puissent modifier leur password. Ce n'est pas du tout ce que tu fais dans ce script

Alors qu'est ce que tu veux faire exactement (avec un exemple concret stp)
merci
Messages postés
207
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
21 juillet 2009
109
Alors, oui c'est pas le password que je veux modifier mais gm, cela ne change en rien, le principe reste le meme.

GM est un groupe.

exemple Dans la table sql:

gm=3 admin:
gm=2 utilisateur avec accés restreint.
Messages postés
207
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
21 juillet 2009
109
Si c'est trop dur a comprendre je peux argumenter et développer.
Messages postés
409
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
5 décembre 2009
117
Bonjor,

J'avoue ne pas bien comprendre ce que tu veux faire exactement :
1°) changer le GM de tes utilisateurs, mais je n'en vois pas l'intérêt
2°) en fait je ne vois pas ce que tu pourrais faire d'autre à partir du script que tu nous a donné...

Ces lignes ci me paraissent particulièrement obscure :
$mdp_base = $result['gm'];
if ($mdp_base==$password)...

Tu lui dis que $mdp_base correspond à ton GM contenu dans la base, or il y a 1 ou 2 posts tu disais que ton GM était un chiffre... Or ensuite tu cherche si ce chiffre est égal au mot de passe entré dans le formulaire par l'utilisateur... Cette condition ne pourra jamais être remplie, sauf si un utilisateur utilise comme mot de passe 1, 2 ou 3 ou... Le if ne pouvant jamais être vérifié, tu n'entrera jamais dans celui-ci et tu ne fera jamais ton UPDATE et donc tu n'aura jamais de changement dans ta base.

Désolé mais c'est ce que j'ai compris et je en pense pas que c'est ce que tu veuille faire.
Tu veux pas donner un EXEMPLE PRECIS avec ce que les gens entrent dans le formulaire, ce que tu veux
Messages postés
207
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
21 juillet 2009
109
Les gens gens rentre dans le formulaire leur password et quand il cliqueron sur changer gm (bouton valider), il montera de grade.

Le grade (gm) c'est prenium par exemple.


Dit moi si ta tjr pas compris sinon je refais tout de A a Z pour que ce soit claire.

Faut savoir que mon code fait 400 lignes.

Donc j'ai coupé des partie, mais j'ai pris l'essentiel.
Messages postés
207
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
21 juillet 2009
109
Merci, je teste sa et je te dis.
Messages postés
207
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
21 juillet 2009
109
Nikel
J'essaie aussi de faire en sort que mes utilisateurs pouissent changer leurs mot de passes...

Cependant avec le code de sly-bzh, j'obtiens des messages d'erreur... Où me suis-je planté?

Merci, voici la partie concernée de mon code (la partie qui nous intéresse se trouve à la fin):

J'essaie aussi de faire en sort que mes utilisateurs pouissent changer leurs mot de passes...

Cependant avec le code de sly-bzh, j'obtiens des messages d'erreur... Où me suis-je planté?

Merci, voici la partie concernée de mon code (la partie qui nous intéresse se trouve à la fin):

<div id="story">
<h1 align="center">Modification du compte</h1>


<form id="modification" name="modification" target="buffer" action="modification0.php" method="POST" style="margin:0px; text-align:left;">


Voici les informations que vous avez soumises à l'ouverture de votre compte. <br>
<br>

<font style="color:#000000;">


Titre  |  Prénom  |  Nom <br>


<input type="text" id="titre" name="titre" style="width:76px; font-family:Arial; font-size:12px; height:19px; background-color:#FFFFFF; border:1px solid gray;">

<input type="text" id="prenom" name="prenom" style="width:175px; font-family:Arial; font-size:12px; height:19px; background-color:#FFFFFF; border:1px solid gray;">

<input type="text" id="nom" name="nom" style="width:175px; font-family:Arial; font-size:12px; height:19px; background-color:#FFFFFF; border:1px solid gray;"> <br>

Téléphone  |  Cellulaire  |  Courriel <br>

<input type="text" id="telephone1" name="telephone1" style="width:142px; font-family:Arial; font-size:12px; height:19px; background-color:#FFFFFF; border:1px solid gray;">

<input type="text" id="telephone2" name="telephone2" style="width:142px; font-family:Arial; font-size:12px; height:19px; background-color:#FFFFFF; border:1px solid gray;">

<input type="text" id="courriel" name="courriel" style="width:142px; font-family:Arial; font-size:12px; height:19px; background-color:#FFFFFF; border:1px solid gray;"> <br>

Adresse complète  |  Ville <br>

<input type="text" id="adresse" name="adresse" style="width:260px; font-family:Arial; font-size:12px; height:19px; background-color:#FFFFFF; border:1px solid gray;">

<input type="text" id="ville" name="ville" style="width:174px; font-family:Arial; font-size:12px; height:19px; background-color:#FFFFFF; border:1px solid gray;"> <br>

Province  |  Pays  |  Code postal <br>

<input type="text" id="province" name="province" style="width:175px; font-family:Arial; font-size:12px; height:19px; background-color:#FFFFFF; border:1px solid gray;">

<input type="text" id="pays" name="pays" style="width:175px; font-family:Arial; font-size:12px; height:19px; background-color:#FFFFFF; border:1px solid gray;">

<input type="text" id="codepostal" name="codepostal" style="width:76px; font-family:Arial; font-size:12px; height:19px; background-color:#FFFFFF; border:1px solid gray;"> <br>

Mot de passe actuel | Nouveau mot de passe<br>

<input type="text" id="passe_actuel" name="passe_actuel" style="width:175px; font-family:Arial; font-size:12px; height:19px; background-color:#FFFFFF; border:1px solid gray;">

<input type="password" id="passe_modifie" name="passe_modifie" style="width:175px; font-family:Arial; font-size:12px; height:19px; background-color:#FFFFFF; border:1px solid gray;"> <br>

<input id="b_modification" type="image" src="Images/Vente/soumettre.jpg" width=106 height=26 border=0 align="absmiddle" style="margin-top:7px;">

  

<span id="warning" style="color:red; font-weight:normal; display:inline;"></span>

</font>

<p>

Vous pouvez modifier vos informations en changeant les cases correspondantes et en cliquant sur [Soumettre].

</form>

<?php


if( isset( $_SESSION["code_client"] ) && !empty( $_SESSION["code_client"] ) ) {

//* Requête d'extraction sur la table - clients - à partir du clientID du client
//* gardé en mémoire dans une variable-session - $_SESSION[loginID]
//* au moment du login
//* Chaque valeur extraite est envoyée dans le champ correspondant du
//* formulaire par le biais de la commande Javascript - document.getElementById(champ).value

$sql = "SELECT * FROM clients WHERE clientID=$_SESSION[code_client] LIMIT 1";
$topdb->execute($sql);

if ( isset($topdb->data) && !empty($topdb->data) ) {
foreach ($topdb->data AS $db_data) {

print <<<eof
<script language="JavaScript">
document.getElementById("titre").value = "$db_data[titre]";
document.getElementById("prenom").value = "$db_data[prenom]";
document.getElementById("nom").value = "$db_data[nom]";
document.getElementById("telephone1").value = "$db_data[telephone1]";
document.getElementById("telephone2").value = "$db_data[telephone2]";
document.getElementById("courriel").value = "$db_data[courriel]";
document.getElementById("adresse").value = "$db_data[adresse]";
document.getElementById("ville").value = "$db_data[ville]";
document.getElementById("province").value = "$db_data[province]";
document.getElementById("pays").value = "$db_data[pays]";
document.getElementById("codepostal").value = "$db_data[codepostal]";
document.getElementById("clientID").value = "$db_data[clientID]";
</script>
eof;

}
}
}

$result = mysql_query("SELECT passe FROM clients WHERE usager = 'courriel'");
$result = mysql_fetch_array($result);
$passe = $result['passe'];
if ($passe==$passe_actuel)
{
mysql_query("UPDATE accounts SET password='$passe_modifie' WHERE password='$passe'");
}

else

echo "Attention votre mot de passe ne correspond pas à celui que vous avez définie lors de votre enregistrement."

?>

</div>
</div>