JeuWeb - Crée ton jeu par navigateur
Changer de mot de passe - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Changer de mot de passe (/showthread.php?tid=6070)



Changer de mot de passe - golradir - 07-04-2012

Bonjour,

J'ai un probléme avec le formulaire qui permet de changer le mot de passe en Md5.
On peut taper le champs et valider, mais le soucis c'est qu'en suite on na plus de mot de passe.
Dans la table la case deviens vide et le joueur peut plus ce connecter

Le champ dans la table s'appel: pass_md5

Merci d'avance pour toute aide et conseil ! Smile

Code :
<?php
session_start();
if (!isset($_SESSION['login'])) {
header ('Location: index.php');
exit();
}  

// CONNEXION MYSQL
    $base = mysql_connect ('localhost', '******, '*******');
    mysql_select_db ('***************', $base);  

//si le membre a cliqué sur modifier le mot de passe
if (isset($_GET['modifier']) && $_GET['modifier'] == 1)
{
$login = $_SESSION['login'];

//on fait une requete pour récuperer l'ancien mot de passe
$sql= "SELECT 1 FROM membre WHERE login='$login'";
$requete = mysql_query($sql) or die (mysql_error());
$resultat=mysql_fetch_array($requete);
$oldpass=$resultat['pass_md5'];


//si l'ancien mot de passe est le bon
if ($pass_md5 == $oldpass) {

// On recupere les valeurs
              if($motdepasse2==$motdepasse1) // Si les deux mdps correspondent on insère dans la BDD
{

$sql= "UPDATE membre SET pass_md5='$motdepasse1' WHERE login='$login'";
$query = mysql_query($sql) or die(mysql_error());

}
}
}

?>

Et le code html:

Code :
<img src="interface/pass.gif"> <b>Changer le mot de passe:</b>
<br>
<br>
<form action="?modifier=1" method="post">
Votre ancien mot de passe : <input name="pass" type="password" id="pass" value="<?php echo "".$var."" ?>"><br> <br>
Votre nouveau mot de passe : <input name="motdepasse1" type="password" id="motdepasse1"><br>
Confirmation du  mot de passe : <input name="motdepasse2" type="password" id="motdepasse2"><br>
    <br><br>
<input type=submit value="Changer mon mot de passe"></form>

<br>



RE: Changer de mot de passe - supermeganono - 07-04-2012

Salut,

$motdepasse1 => A quel moment tu lui attribue une valeur ? Si c'est le champ du formulaire que tu veux => $_POST["motdepasse1"]. Donc motdepasse1 est vide dans ton script non ? t'as fait un echo pour vérifier ?
Edit : si Register global est à ON, ok elle aura la valeur du champ, mais fait un echo pour vérifier tout de même, ou vérifier la configuration du Register_global.

Code :
SELECT 1 FROM membre WHERE login='$login'
T'es pas censé écrire ceci plutôt :
Code :
SELECT pass_md5 FROM membre WHERE login='$login'
J'ai pas pigé pourquoi SELECT 1 ?

Un truc qu'on m'as conseillé :
$resultat=mysql_fetch_array($requete);

Mysql_fetch_array() te renvoi deux tableau, l’équivalent d'un mysql_fetch_assoc() et d'un mysql_fetch_row(). Ici comme tu utilise que les nom et pas les numéro d'index, utilise directement mysql_fetch_assoc(). Le résultat sera le même pour toi, ça évite la consommation de ressource que tu n'utilise pas.


RE: Changer de mot de passe - Murthy - 07-04-2012

En même temps, tu compares $pass_md5 et $oldpass mais il vient d'où $pass_md5 ?


RE: Changer de mot de passe - golradir - 07-04-2012

Pour motdepasse1 et motdepasse2, il s'agit des deux casses, une pour le changement et une autre qui valide.

Votre nouveau mot de passe :
Confirmation du mot de passe


RE: Changer de mot de passe - Murthy - 07-04-2012

De plus même si tu rentres dans ta vérification, tu update ton mot de passe sans le crypter et donc quand un utilisateur voudra se connecter après avoir mis à jour son mot de passe, il ne trouvera pas la même chaine dans ta requête de vérification de login.