[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. 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 ^^
    1. Sorry ^^ !
      heu bah ma page est en php et j'utilise Phpmyadmin pour ma bdd
      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. 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. 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. 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. 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. 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. 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. 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 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. 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. 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. 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>