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 @++
?>
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.