Permettre aux utilisateurs de changer leurs mots de passe

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 124 fois - Téléchargée 28 fois

Contenu du snippet

Ce code PHP/mysql permet aux utilisateurs membres dans votre site (inscrits dans votre base de données ou vous meme) de changer le mot de passe, on peut appliquer ça pour le compte si on veut ou toute autre chose dont on veut laisser l'utilisateur de la changer s'il veut après avoir droit à y accéder.

La première des choses, je préfère dans ce cas qu'on crée une page html et autre php pour la bonne présentation et non pas une page html qui contient le formulaire et et son traitement (code php).
Vous pouvez changer la couleur des cellules, largeur du tableau écrires des commentaires avous voyez nécessaires....de lapage html. Créez cette page et nommez la "modifypswrd.htm" voici son code HTML:

<html>
<title>Modifier son mot de passe</title>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<form name="form1" method="post" action="modifypswrd.php">
<p align="center" style="line-height:100%; margin-top:0; margin-bottom:0;"> </p>
<p align="center" style="line-height:100%; margin-top:0; margin-bottom:0;"> </p>
<p align="center" style="line-height:100%; margin-top:0; margin-bottom:0;"> </p>
<p align="center" style="line-height:100%; margin-top:0; margin-bottom:0;"><font face="Verdana" color="black"><span style="font-size:9pt;"><b>Changement
de mot de passe</b></span></font></p>
<p align="center" style="line-height:100%; margin-top:0; margin-bottom:0;"> </p>
<p align="center" style="line-height:100%; margin-top:0; margin-bottom:0;"> </p>
<p align="center" style="line-height:100%; margin-top:0; margin-bottom:0;">  </p>
<table width="337" align="center" cellspacing="0" bgcolor="silver" bordercolordark="white" bordercolorlight="white" cellpadding="0">
<tr>
<td width="156" bgcolor="silver" height="43"> <p align="center" style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="white"> </font><font face="Verdana" color="white"><b><span style="font-size:9pt;">Ancien
mot de passe</span></b></font></p>

</td>
<td width="181" height="43"> <p align="center" style="line-height:100%; margin-top:0; margin-bottom:0;"><font face="Verdana" color="navy"><b><span style="font-size:9pt;"><input type="password" name="ancienpass"></span></b></font></p>
</td>
</tr>
<tr>
<td width="156" bgcolor="silver"> <p align="center" style="line-height:100%; margin-top:0; margin-bottom:0;"><font face="Verdana" color="white"><b><span style="font-size:9pt;">Le
nouveau</span></b></font></p>

</td>
<td width="181"> <p align="center" style="line-height:100%; margin-top:0; margin-bottom:0;"><font face="Verdana" color="navy"><b><span style="font-size:9pt;"><input type="password" name="nouveaupass1"></span></b></font></p>
</td>
</tr>
<tr>
<td width="156" bgcolor="silver">
<p align="center"><font face="Verdana" color="white"><b><span style="font-size:9pt;">Confirmer
le</span></b></font></p>
</td>
<td width="181"> <p align="center" style="line-height:100%; margin-top:0; margin-bottom:0;"><font face="Verdana" color="navy"><b><span style="font-size:9pt;"><input type="password" name="nouveaupass2"></span></b></font></p>
</td>
</tr>
<tr>
<td width="156" height="44">
<p> </p>
</td>
<td width="181" height="44"> <p align="center" style="line-height:100%; margin-top:0; margin-bottom:0;"><input type="submit" name="submit" value="Changement"></p>

</td>
</tr>
</table>
</form>
</body>
</html>

Remarque: n'oubliez pas de créer une table dans votre base (nommez la "admin" qui contient obligatoirement un champ nommé "password") biensur elle ne contient pas que ce champ (par éxemple aussi compte email....et les champ que vous voulez).

Source / Exemple :


<?
//Voici tout le code de la page modifypswrd.php
//require pour appeler le fichier de connexion ou directement:
$hote="localhost"; //La hote d'hébergeur de votre site, localhost c'est pour ceux qu'ils ont un //serveur virtuel dans leurs ordinateurs comme moi (apache)
$nom="root";  //Le compte fourni par l'hébergeur de votre site pour accéder à la base de données
$passw="";  //Le mot de passe fourni par l'hébergeur de votre site pour accéder à la base de //données pour un serveur virtuel (personnel) il ny a aucun mot de passe (on laisse du vide)
$base="mabase"; //Le nom de votre base chez l'hébergeur ou le nom que tu l'a donné si vous avez php+mysql+apache ou n'importe serveur éxécutant php installé sur votre ordinateur.
$conecter=mysql_connect($hote,$nom,$passw)or die ("erreur de connexion");
mysql_select_db($base,$conecter) or die ("erreur de selection");
require("config.inc.php"); // Si on a mis les lignes pérédentes on doit supprimer cette ligne.
//Ce qui suit c'est le nom du bouton d'envoie du formulaire dans la page HTML,le if signifie si //on a clické sur le bouton d'envoie se passe le traitement PHP dans cette page
if ($submit)
	{
//Si le champ pour ancien mot de passe est vide		
		if (trim($ancienpass) == "")
		{
                echo "<b><p align=center><span style=font-size:10pt;><font color=red face=verdana>Ancien mot de passe ne doit pas reter vide!</p></font></b>";		
		include('modifypswrd.htm');
		exit;
		}
//On cherche l'éxistence de l'ancien mot de passe tapé		
   $passexists = "SELECT password FROM admin WHERE password='$ancienpass'";   
   $existence = mysql_query($passexists); 

//Si le résultat est 0 c'est qu'il n'éxiste pas on obtient donc un message de non validité de //l'ancien mot de passe (le mot de passe qu'on veut changer et qui n'est pas changé encore)
    if (mysql_num_rows($existence) == 0)
   {
   echo "<b><p align=center><span style=font-size:10pt;><font color=red face=verdana>Ancien mot de passe invalide!</p></font></b>";		
   include('modifypswrd.htm');
   exit;
   }
//Si un des champs (nouveau mot de passe ou confirmation du nouveau mot de passe) est vide
		if (trim($nouveaupass1) == "" || trim($nouveaupass2) == "")
	{
   echo "<b><p align=center><span style=font-size:10pt;><font color=red face=verdana>Le champ nouveau mot de passe et confirmation ne doivent pas reter vides!</p></font></b>";		
			include('modifypswrd.htm');
			exit;
	}
//si le nouveau mot de passe n'est pas bien confirmé (celui écrit dans la case nouveau mot de //passe est différent de celui tapé dans la case confirmation)
	if ($nouveaupass2 !=$nouveaupass1)
		{

                echo "<b><p align=center><span style=font-size:10pt;><font color=red face=verdana>Le nouveau mot de passe n'est pas confirmé justement!</p></font></b>";		
		include('modifypswrd.htm');
		exit;
		}
	}
//Après avoir pensé à toutes les possibilités on va appeler la variable "$existence", si vous //vous rappelez, c'est celle qu'on a utilisé pour chercher l'éxistence du mot de pase tapé (celui //dans la base de données et qu'on veut changer).
   
//Si le résultat est superieur à 0 c'est qu'il éxiste et après la vérification des possibilités //comme on a dit (pas de champs vides, pas fausse confirmation...Enfin le changement s'effectue //grace àla fonction mysql "UPDATE"
  if (mysql_num_rows($existence) > 0) {
$sql = "UPDATE admin set password='$nouveaupass1' WHERE password='$ancienpass'";
$req = mysql_query($sql) or die('erreur de modification');
   	print "<br><br><p align=\"center\">";
			print "	<font face=\"verdana\" color=\"#000080\">";
			print "		<b>Votre mot de passe a bien été modifié!</b>";
			print "	</font>";
			print "</p><br><br>";
//Le lien qui suit c'est pour se retourner à une page, login par éxemple		
print"<p align=center><font face=verdana size=2><a href=login.php>Authentifiez vous maintenant!</a><br><br>";
			exit;
	}
//On ferme la connexion avec la base	
mysql_close();
//On libère la mémoire
mysql_free_result();
//A chaque fois qu'on change le mot de passe, le nouveau va etre considéré comme ancien (à mettre //dans la case ancien mot de passe)

// Code PHP4/mysql testé sous apache avec belle présentation de windows XP
// Farid     @++
?>

A voir également

Ajouter un commentaire

Commentaires

stephylee59
Messages postés
1
Date d'inscription
samedi 16 janvier 2010
Statut
Membre
Dernière intervention
17 janvier 2010
-
euh, si le nouveau mot de passe existe déjà dans la base, on met pas un peu le bazard?
cs_natha
Messages postés
22
Date d'inscription
mardi 13 mai 2003
Statut
Membre
Dernière intervention
21 octobre 2005
-
Dit, le code html, pas besoin de le poster comme ça, le formulaire seul suffisait... parce que là l'écran est chargé pour pas grand chose...
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
salut semetic !

juste une suggestion d'optimisation : utilise COUNT au lieu de mysql_num_rows($requete).

Voici la syntaxe :

$requete=mysql_query("SELECT COUNT(*) FROM table WHERE patatipatata") or die(mysql_error());

$r=mysql_fetch_row($requete);
$total=$r[0];

Tu peux à la place du * mettre le nom d'un champ comme tu le ferais avec une requête classique :

$requete=mysql_query("SELECT COUNT(champ) FROM table WHERE patatipatata") or die(mysql_error());

Bonne continuation

a +

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.