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
-
hraph
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
78
$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
Merci

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

CCM 87086 internautes nous ont dit merci ce mois-ci

hraph
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 !
Messages postés
13831
Date d'inscription
vendredi 6 novembre 2009
Statut
Contributeur
Dernière intervention
4 décembre 2019
1 247
Slt
Je suis pas un pro de php mais cette ligne m'intrigue:
list($password) = mysql_fetch_array($sql);
++
Messages postés
6125
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
16 novembre 2018
805