Modifier mot de passe espace membre php

Résolu/Fermé
Signaler
Messages postés
29
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
4 octobre 2013
-
Messages postés
29
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
4 octobre 2013
-
Bonjour,

Je voulais créer une page php pour permettre aux utilisateur de pouvoir modifier leur mot de passe de l'espace membre. J'ai crée ce script en m'inspirant d'internet mais je ne comprends pas l'erreur php : "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource" Merci.

voici le code

sur la première page de la modification : (pass-modif.php)

<html>
<h2>Modifier le mot de passe</h2>
<form method="post" action="pass-modif-2.php">
Login : <input type="text" name="login">
Ancien mot de passe : <input type="password" name="pass_old">
Nouveau mot de passe : <input type="password" name="new_pass">
Confirmation : <input type="password" name="new_pass_conf">
<input type="submit" name="Submit" value="Valider">
</form>
</body>
</html>


et sur la page php : (pass-modif-2.php)

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

	exit();
}
?>
<?php 
  if (isset($_POST['Submit']) && $_POST['Submit'] == 'Valider') {
    $user = $_POST['login'];
	$new_pass = $_POST['new_pass'];
	$pass_old = $_POST['pass_old'];
	$new_pass_conf = $_POST['new_pass_conf'];
	$base = mysql_connect ('localhost', bduser', 'bdpass');
			mysql_select_db ('bdname', $base);
// tu récupère l'ancien mot de passe dans la bdd
$sql = mysql_query('SELECT pass FROM admin WHERE login = ' . $user .'');
list($password) = mysql_fetch_array($sql);
 
// tu compare si le nouveau passe correspond à l'ancien
if ($new_pass == $new_pass_conf)
{
 
 
    //tu vérifie si il sont identique
    if ($password == $pass_old)
    {
        //si oui tu update et encrypte le nouveau mot de passe dans la bdd
 
        $pass   = $new_pass;  
 
        $query  = mysql_query('UPDATE admin SET pass = ' . $pass . ' WHERE login = ' . $user .'');
 
        echo "Merci, le mot de passe à été changé.";
    }
    else
    {
        echo "Ancien mot de passe non valide";
    }
}
else
{
    echo "Mot de passe de confirmation incorrect, recommencez SVP";
}
}
?>


3 réponses

Messages postés
699
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
$sql = mysql_query('SELECT pass FROM admin WHERE login = ' . $user .'');


$user est une chaine de caractère donc il te manque des quotes

$sql = mysql_query("SELECT pass FROM admin WHERE login = '" . $user ."'");


même remarque pour la requete UPDATE un peu plus bas
5
Messages postés
29
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
4 octobre 2013

merci beaucoup, ça marche. c'était donc ça qui faisait tout foirer !
0
Messages postés
13782
Date d'inscription
vendredi 6 novembre 2009
Statut
Contributeur
Dernière intervention
2 novembre 2020
1 436
Slt
Je suis pas un pro de php mais cette ligne m'intrigue:
list($password) = mysql_fetch_array($sql);
++
1
Messages postés
5698
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
19 août 2021
1 294
0