Modifier mot de passe espace membre php

Résolu/Fermé
hraph Messages postés 29 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 4 octobre 2013 - 20 mars 2012 à 01:22
hraph Messages postés 29 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 4 octobre 2013 - 20 mars 2012 à 22:45
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";
}
}
?>


A voir également:

3 réponses

maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
20 mars 2012 à 10:05
$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
hraph Messages postés 29 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 4 octobre 2013
20 mars 2012 à 22:45
merci beaucoup, ça marche. c'était donc ça qui faisait tout foirer !
0
Utilisateur anonyme
20 mars 2012 à 02:11
Slt
Je suis pas un pro de php mais cette ligne m'intrigue:
list($password) = mysql_fetch_array($sql);
++
1
AssassinTourist Messages postés 5710 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 311
20 mars 2012 à 09:57
Bonjour,
Inspire-toi de ceci : https://www.commentcamarche.net/contents/784-php-bases-de-donnees
0