[php] Script changer mot de passe

Résolu/Fermé
mmorpg-creation Messages postés 207 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 21 juillet 2009 - 1 avril 2008 à 00:16
 hickorie - 12 avril 2010 à 03:45
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

sly-bzh Messages postés 409 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
2 avril 2008 à 22:32
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
sly-bzh Messages postés 409 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
5 avril 2008 à 18:44
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
2
mmorpg-creation Messages postés 207 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 21 juillet 2009 119
2 avril 2008 à 05:21
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.
1
Utilisateur anonyme
2 avril 2008 à 10:47
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];
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sly-bzh Messages postés 409 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
24 juin 2008 à 18:38
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
1
beautytale Messages postés 10 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 1 avril 2008
1 avril 2008 à 16:02
Il faut des $ deavnt les variables
0
sly-bzh Messages postés 409 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
1 avril 2008 à 22:39
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."
}
  
0
mmorpg-creation Messages postés 207 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 21 juillet 2009 119
3 avril 2008 à 01:20
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.
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 97
3 avril 2008 à 02:39
Poste ton script complet, ca sera plus simple pour debbuguer ... ;)
0
mmorpg-creation Messages postés 207 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 21 juillet 2009 119
3 avril 2008 à 16:48
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>
0
sly-bzh Messages postés 409 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
3 avril 2008 à 16:53
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 ?
0
mmorpg-creation Messages postés 207 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 21 juillet 2009 119
3 avril 2008 à 16:58
gm= game membre

sql

la table c accouts dedans id, password gm
0
sly-bzh Messages postés 409 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
3 avril 2008 à 17:11
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
0
mmorpg-creation Messages postés 207 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 21 juillet 2009 119
4 avril 2008 à 00:15
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.
0
mmorpg-creation Messages postés 207 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 21 juillet 2009 119
5 avril 2008 à 11:27
Si c'est trop dur a comprendre je peux argumenter et développer.
0
sly-bzh Messages postés 409 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
5 avril 2008 à 13:51
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
0
mmorpg-creation Messages postés 207 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 21 juillet 2009 119
5 avril 2008 à 15:59
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.
0
mmorpg-creation Messages postés 207 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 21 juillet 2009 119
5 avril 2008 à 19:03
Merci, je teste sa et je te dis.
0
mmorpg-creation Messages postés 207 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 21 juillet 2009 119
24 juin 2008 à 01:10
Nikel
0
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>
0