[Php] Script : modifier un mdp : zone membre

Bonjour,
Cela fait quelque temps déjà que je cherche comment faire pour que les membre de mon site puisse changer le mot de passe dans la base de donnée . Quelqu'un aurrait un script ou un lien d'un script accomplissant cela ?
Merci d'avance !
Cordialement
Clement76240

16 réponses

  1. Bouddiou !! :) Test ça je crois mettre trompé dans le nom d'un champ ;)

    <?php
    session_start();
    if (!isset($_SESSION['login'])) 
    {
    	header ('Location: index.php');
    	exit();
    }
    $login = htmlentities(trim($_SESSION['login']));
    
    if (isset($_POST['old_pass']) && isset($_POST['new_pass2']) && isset($_POST['new_pass']))
    {
    	$old_pass = $_POST['old_pass'];
    	$new_pass2 = $_POST['new_pass2'];
    	$new_pass = $_POST['new_pass'];
    	
    	$base = mysql_connect ('', '', '');
    	mysql_select_db ('', $base);
    		
    	if($new_pass == $new_pass2)
    	{
    		$verif_pass = mysql_query("SELECT pass_md5 FROM membre WHERE login='".$_SESSION['login']."'");
    		$array_verif_pass = mysql_fetch_array($verif_pass);
    		$array_pass = $array_verif_pass['pass_md5'];
    		
    		if($array_pass == $old_pass)
    		{
    			mysql_query("UPDATE membre SET pass_md5='".mysql_escape_string(md5($new_pass))."' WHERE login='".$_SESSION['login']."'");
    			mysql_close($base);
    		}
    		echo 'Mot de passe correct : '.$array_pass .', Mot de passe proposé : '.$old_pass;
    	}
    	else
    	echo 'les mots de passe ne sont pas identique';
    }
    else
    echo 'veuillez remplir correctement le formulaire';
    ?>
    
    <html>
    <head>
    <title>Espace membre</title>
    </head>
    
    <body>
    Bienvenue <?php echo $login; ?>!<br />
    <form method="post">
    <label for="old_pass">Ancien mot de passe :  </label><input type="text" id="old_pass" name="old_pass" /><br />
    <label for="new_pass">Nouveau mot de passe :  </label><input type="text" id="new_pass" name="new_pass" /><br />
    <label for="new_pass2">Confirmation mot de passe :  </label><input type="text" id="new_pass2" name="new_pass2" /><br />
    <input type="submit" /><input type="reset" />
    </form>
    <a href="deconnexion.php">Déconnexion</a>
    </body>
    </html>
    1. Toujour pas ^^
      Page au debut :

      veuillez remplir correctement le formulaire Bienvenue admin!
      Ancien mot de passe :
      Nouveau mot de passe :
      Confirmation mot de passe :

      Après remplissage du formulaire :

      Mot de passe correct : , Mot de passe proposé : mon-mdp-actuelle Bienvenue admin!
      Ancien mot de passe :
      Nouveau mot de passe :
      Confirmation mot de passe :

      Et je peut toujours que me reconnecter avec l'ancien ...
      1. Re,

        Bon j'ai un peu le flemme donc ça te donnera les deux passes et ainsi je verrai l'erreur :)

        <?php
        session_start();
        if (!isset($_SESSION['login'])) 
        {
        	header ('Location: index.php');
        	exit();
        }
        $login = htmlentities(trim($_SESSION['login']));
        
        if (isset($_POST['old_pass']) && isset($_POST['new_pass2']) && isset($_POST['new_pass']))
        {
        	$old_pass = $_POST['old_pass'];
        	$new_pass2 = $_POST['new_pass2'];
        	$new_pass = $_POST['new_pass'];
        	
        	$base = mysql_connect ('', '', '');
        	mysql_select_db ('', $base);
        		
        	if($new_pass == $new_pass2)
        	{
        		$verif_pass = mysql_query("SELECT pass_md5 FROM membre WHERE login='".$_SESSION['login']."'");
        		$array_verif_pass = mysql_fetch_array($verif_pass);
        		$array_pass = $array_verif_pass['pass'];
        		
        		if($array_pass == $old_pass)
        		{
        			mysql_query("UPDATE membre SET pass_md5='".mysql_escape_string(md5($new_pass))."' WHERE login='".$_SESSION['login']."'");
        			mysql_close($base);
        		}
        		echo 'Mot de passe correct : '.$array_pass .', Mot de passe proposé : '.$old_pass;
        	}
        	else
        	echo 'les mots de passe ne sont pas identique';
        }
        else
        echo 'veuillez remplir correctement le formulaire';
        ?>
        
        <html>
        <head>
        <title>Espace membre</title>
        </head>
        
        <body>
        Bienvenue <?php echo $login; ?>!<br />
        <form method="post">
        <label for="old_pass">Ancien mot de passe :  </label><input type="text" id="old_pass" name="old_pass" /><br />
        <label for="new_pass">Nouveau mot de passe :  </label><input type="text" id="new_pass" name="new_pass" /><br />
        <label for="new_pass2">Confirmation mot de passe :  </label><input type="text" id="new_pass2" name="new_pass2" /><br />
        <input type="submit" /><input type="reset" />
        </form>
        <a href="deconnexion.php">Déconnexion</a>
        </body>
        </html>
        1. Merci de ta reponse mais ..
          Je me connecte , la page charge , s'affiche et se me met directement sa :

          veuillez remplir correctement le formulaire Bienvenue admin!
          Ancien mot de passe :
          Nouveau mot de passe :
          Confirmation mot de passe :

          Donc j'essai quand même , je tape mon mdp puis les 2 nouveaux identique et :

          mauvais mot de passveuillez remplir correctement le formulaire Bienvenue admin!
          Ancien mot de passe :
          Nouveau mot de passe :
          Confirmation mot de passe :

          Mauvais mot de pass ? Je venait juste de me connecter avec le mot de pass en question et il marchait très bien ..
          Ps: J'ai vérifier et rien ne change dans Phpmyadmin
          1. Tiens c'est la même chose sauf qu'il devrait me dire où j'ai merdé :)

            <?php
            session_start();
            if (!isset($_SESSION['login'])) 
            {
            	header ('Location: index.php');
            	exit();
            }
            $login = htmlentities(trim($_SESSION['login']));
            
            if (isset($_POST['old_pass']) && isset($_POST['new_pass2']) && isset($_POST['new_pass']))
            {
            	$old_pass = $_POST['old_pass'];
            	$new_pass2 = $_POST['new_pass2'];
            	$new_pass = $_POST['new_pass'];
            	
            	$base = mysql_connect ('', '', '');
            	mysql_select_db ('', $base);
            		
            	if($new_pass == $new_pass2)
            	{
            		$verif_pass = mysql_query("SELECT pass_md5 FROM membre WHERE login='".$_SESSION['login']."'");
            		$array_verif_pass = mysql_fetch_array($verif_pass);
            		
            		if($array_verif_pass['pass'] == $old_pass)
            		{
            			mysql_query("UPDATE membre SET pass_md5='".mysql_escape_string(md5($new_pass))."' WHERE login='".$_SESSION['login']."'");
            			mysql_close($base);
            		}
            		echo 'mauvais mot de pass';
            	}
            	else
            	echo 'les mots de passe ne sont pas identique';
            }
            echo 'veuillez remplir correctement le formulaire';
            ?>
            
            <html>
            <head>
            <title>Espace membre</title>
            </head>
            
            <body>
            Bienvenue <?php echo $login; ?>!<br />
            <form method="post">
            <label for="old_pass">Ancien mot de passe :  </label><input type="text" id="old_pass" name="old_pass" /><br />
            <label for="new_pass">Nouveau mot de passe :  </label><input type="text" id="new_pass" name="new_pass" /><br />
            <label for="new_pass2">Confirmation mot de passe :  </label><input type="text" id="new_pass2" name="new_pass2" /><br />
            <input type="submit" /><input type="reset" />
            </form>
            <a href="deconnexion.php">Déconnexion</a>
            </body>
            </html>
            1. Merci pour ta réponse très rapide mais ce ne marche pas ...
              J'ai configurer la connexion sql , je l'ai mis sur mon ftp , la page se lance et toute s'affiche bien , sans erreur sql .
              Je rentrer mon mot de passe puis les deux nouveaux , je valide puis les champ redeviennent vide, j'essai de me connecter avec mon nouveaux mdp mais sa marche pas alors que ça marche toujour avec l'ancien mdp ..
              Il y a t'il une autre manip a faire qui juste configuer :
              $base = mysql_connect ('', '', '');
              	mysql_select_db ('', $base);

              ??
              Faut-il toucher a quelque chose dans phpmyadmin !?
              Merci bcp pour vos réponse !
              1. Regarde dans phpmyadmin et confirme moi que le mot de passe ne change pas.
            2. Re,

              J'ai fais ça un peu vite, donc dis moi si ça marche pas :

              membre
              <?php
              session_start();
              if (!isset($_SESSION['login'])) 
              {
              	header ('Location: index.php');
              	exit();
              }
              $login = htmlentities(trim($_SESSION['login']));
              
              if (isset($_POST['old_pass']) && isset($_POST['new_pass2']) && isset($_POST['new_pass']))
              {
              	$old_pass = $_POST['old_pass'];
              	$new_pass2 = $_POST['new_pass2'];
              	$new_pass = $_POST['new_pass'];
              	
              	$base = mysql_connect ('', '', '');
              	mysql_select_db ('', $base);
              		
              	if($new_pass2 == $new_pass2)
              	{
              		$verif_pass = mysql_query("SELECT pass_md5 FROM membre WHERE login='".$_SESSION['login']."'");
              		$array_verif_pass = mysql_fetch_array($verif_pass);
              		
              		if($array_verif_pass['pass'] == $old_pass)
              		{
              			mysql_query("UPDATE membre SET pass_md5='".mysql_escape_string(md5($new_pass))."' WHERE login='".$_SESSION['login']."'");
              			mysql_close($base);
              		}
              	}
              }
              ?>
              
              <html>
              <head>
              <title>Espace membre</title>
              </head>
              
              <body>
              Bienvenue <?php echo $login; ?>!<br />
              <form method="post">
              <label for="old_pass">Ancien mot de passe :  </label><input type="text" id="old_pass" name="old_pass" /><br />
              <label for="new_pass">Nouveau mot de passe :  </label><input type="text" id="new_pass" name="new_pass" /><br />
              <label for="new_pass2">Confirmation mot de passe :  </label><input type="text" id="new_pass2" name="new_pass2" /><br />
              <input type="submit" /><input type="reset" />
              </form>
              <a href="deconnexion.php">Déconnexion</a>
              </body>
              </html>
              1. Expliquez moi exactement ce que vous voulez , mon script est divisée en 4pages :
                Index :
                <?php
                // on teste si le visiteur a soumis le formulaire de connexion
                if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
                	if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
                
                		$base = mysql_connect ('', '', '');
                		mysql_select_db ('', $base);
                
                		// on teste si une entrée de la base contient ce couple login / pass
                		$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
                		$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
                		$data = mysql_fetch_array($req);
                
                		mysql_free_result($req);
                		mysql_close();
                
                		// si on obtient une réponse, alors l'utilisateur est un membre
                		if ($data[0] == 1) {
                			session_start();
                			$_SESSION['login'] = $_POST['login'];
                			header('Location: membre.php');
                			exit();
                		}
                		// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
                		elseif ($data[0] == 0) {
                			$erreur = 'Compte non reconnu.';
                		}
                		// sinon, alors la, il y a un gros problème :)
                		else {
                			$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
                		}
                	}
                	else {
                		$erreur = 'Au moins un des champs est vide.';
                	}
                }
                ?>
                <html>
                <head>
                <title>Accueil</title>
                </head>
                
                <body>
                Connexion à l'espace membre :<br />
                <form action="index.php" method="post">
                Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
                Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
                <input type="submit" name="connexion" value="Connexion">
                </form>
                <a href="inscription.php">Vous inscrire</a>
                <?php
                if (isset($erreur)) echo '<br /><br />',$erreur;
                ?>
                </body>
                </html>
                
                Inscription :
                <?php
                // on teste si le visiteur a soumis le formulaire
                if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
                	// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
                	if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
                		// on teste les deux mots de passe
                		if ($_POST['pass'] != $_POST['pass_confirm']) {
                			$erreur = 'Les 2 mots de passe sont différents.';
                		}
                		else {
                $base = mysql_connect ('', '', '');
                		mysql_select_db ('', $base);
                
                			// on recherche si ce login est déjà utilisé par un autre membre
                			$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"';
                			$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
                			$data = mysql_fetch_array($req);
                
                			if ($data[0] == 0) {
                				$sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass'])).'")';
                				mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
                
                				session_start();
                				$_SESSION['login'] = $_POST['login'];
                				header('Location: membre.php');
                				exit();
                			}
                			else {
                				$erreur = 'Un membre possède déjà ce login.';
                			}
                		}
                	}
                	else {
                		$erreur = 'Au moins un des champs est vide.';
                	}
                }
                ?>
                <html>
                <head>
                <title>Inscription</title>
                </head>
                
                <body>
                Inscription à l'espace membre :<br />
                <form action="inscription.php" method="post">
                Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
                Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
                Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
                Email:<
                <input type="submit" name="inscription" value="Inscription">
                </form>
                <?php
                
                Membre
                <?php
                session_start();
                if (!isset($_SESSION['login'])) {
                	header ('Location: index.php');
                	exit();
                }
                ?>
                
                <html>
                <head>
                <title>Espace membre</title>
                </head>
                
                <body>
                Bienvenue <?php echo htmlentities(trim($_SESSION['login'])); ?>!<br />
                <a href="deconnexion.php">Déconnexion</a>
                </body>
                </html>
                
                
                Deconnexion :
                
                <?php
                session_start();
                session_unset();
                session_destroy();
                header('Location: index.php');
                exit();
                ?>
                


                * Se sont des fichier php
                1. Je croit que je vais abandonner ! =)
                  je ne suis que debutant et je n'y comprend que dal ^^ !
                  1. C'est pas compliqué et pas long mais faut nous donner de quoi t'aider, c'est tout ...
                2. Salut,

                  L'art de répondre à coté de la plaque :)
                  C'est de toi le code ? Et oui faut utiliser des requêtes ...

                  edit : ah ben apparemment non. Je te conseille de lire ça.
                  La chance aide parfois, le travail toujours !
                  1. j'utilise un script tt simple mais sa fait longtemps ... je ne sais plus ou je l'ai trouver ....
                    Mais il n"y a pas de requête sql pour ma demande ,
                    juste histoire que sql se connecte et que le membre puisse modifier sont mdp ..
                    Je peut t'envoyer le script par emai lsi tu veut ..
                    1. Ça ne m'avance pas ...
                      Utilises-tu un CMS ? As-tu codé toi-même ? Ou utilises-tu un script trouvé (dans ce cas, indique où) ?
                      1. Sorry ^^ !
                        heu bah ma page est en php et j'utilise Phpmyadmin pour ma bdd
                        1. Oui oui , je peut m'inscrire et me connecter mais cr que je coudrait savoir c'est si il y avait un moyen qu'après être connecter, le membre puisse changer sont mdp .

                          Merci de ta réponse rapide ^^