I. Présentation▲
Un mot de passe permet de sécuriser un programme ou une partie d'un programme. Il permet de restreindre l'accès aux utilisateurs. Le ou les administrateurs ayant le mot de passe peuvent alors accéder à certaines options d'un programme ou à un programme tout entier.
Le mot de passe permet également d'identifier par le login (nom de l'utilisateur), la personne qui utilise l'application.
II. Description du programme▲
Lors de l'exécution d'un programme, une boite de dialogue peut vous demander un mot de passe pour accéder aux programmes.
Pour concevoir une application offrant cette option, il faut tout d'abord choisir un mot de passe.
Il y a deux types de solutions suivant l'application que l'on veut effectuer :
- la première consiste à mettre le mot de passe dans le source du programme ;
- la deuxième permet à l'administrateur de changer le mot de passe.
III. Mot de passe dans le source du programme▲
Ce programme est très facile à réaliser en Delphi.
Voici un aperçu du programme lors de son exécution.
Nous avons besoin de deux composants TButton, un TEdit et deux TLabel.
Disposez ces composants comme ci-dessus.
Le but est de comparer ce que l'utilisateur entre dans le TEdit et de réagir lors de l'appui sur le bouton OK.
procedure
TForm1.Button1Click(Sender: TObject);
begin
//Bouton OK
if
Edit1.Text='delphi'
then
ShowMessage('Mot de passe correct !'
)
else
ShowMessage('Mot de passe incorrect !'
);
end
;
procedure
TForm1.Button2Click(Sender: TObject);
begin
//Bouton Annuler
Close;
end
;
Télécharger le programme [5 Ko]
Astuce : Mettez * à la place de #0 dans la propriété PassWordChar du composant TEdit. Cela permettra de cacher le mot de passe lorsque l'utilisateur tapera le mot de passe.
IV. Changer le mot de passe▲
Après avoir validé son mot de passe, l'administrateur pourra alors le changer. Il faut donc un moyen de sauvegarder le mot de passe, car celui-ci contrairement à l'exemple précédent pourra changer.
Voici une capture de l'application.
Nous avons besoin de deux composants TButton, un TEdit et deux TLabel. Disposez ces composants comme ci-dessus.
Le but est de comparer ce que l'utilisateur entre dans le TEdit et de réagir lors de l'appui sur le bouton OK.
procedure
TForm1.Button2Click(Sender: TObject);
begin
//Bouton Annuler
Close;
end
;
La validation du changement de mot de passe se fait en cliquant sur le bouton OK.
On doit alors valider l'opération, si le texte (mot de passe) dans le Edit1 correspond à celui du texte du Edit2.
procedure
TForm1.Button1Click(Sender: TObject);
begin
//Bouton Ok
if
Edit1.Text=Edit2.Text then
begin
ShowMessage('Le mot de passe est valide.'
);
end
else
ShowMessage('Le mot de passe ne correspond pas à la confirmation.'
)
end
;
Ensuite, il faut sauvegarder le mot de passe.
Je vous propose trois solutions pour l'enregistrement du mot de passe en utilisant :
- un fichier ini ;
- la base de registre.
IV-A. Fichier ini▲
Un fichier ini est utilisé pour sauvegarder une information. Dans notre exemple ce sera le mot de passe.
uses
IniFiles;
procedure
TForm1.Button1Click(Sender: TObject);
Var
FichierIni : TIniFile;
begin
//Bouton OK
if
Edit1.Text=Edit2.Text then
//Si le mot de passe est bien le même alors...
begin
//On affiche un message indiquant que le mot de passe est valide
ShowMessage('Le mot de passe est valide.'
);
//Ouvre le fichier ini (s’il n'existe pas, le fichier est alors créé)
FichierIni:=TIniFile.Create('monfichier.ini'
);
//Enregistre le mot de passe
FichierIni.WriteString('Preference'
,'Pass'
,Edit1.Text);
//Détruit l'objet
FichierIni.Free;
Close;
end
else
//Sinon...
//On affiche un message indiquant qu'il y a une différence entre les deux edit
ShowMessage('Le mot de passe ne correspond pas à la confirmation.'
);
end
;
Le fichier ini sera par défaut dans le répertoire Windows.
Télécharger le programme [6 Ko]
IV-B. Base de registre▲
La base de registre est aussi utilisée pour l'enregistrement de données.
uses
Registry;
procedure
TForm1.Button1Click(Sender: TObject);
Var
Registre : TRegistry;
begin
//Bouton OK
//Si le texte des deux edit est le même alors...
if
Edit1.Text=Edit2.Text then
begin
// Affiche un message indiquant que le mot de passe est valide
ShowMessage('Le mot de passe est valide.'
);
// Crée un objet TRegistry
Registre:=TRegistry.Create;
// Définit la clé principale
Registre.RootKey:=HKEY_CLASSES_ROOT;
// "OpenKey" ouvre une clé particulière (True signifie que
// la clé est créée si elle n'existe pas}
Registre.OpenKey('\MonRep'
,True
);
// Renvoie un string à partir du nom de la valeur
Edit1.Text:=Registre.ReadString('Pass'
);
// Ferme la clé
Registre.CloseKey;
// Détruit l'objet
Registre.Free;
end
else
//Sinon...
//On affiche un message indiquant que le texte des deux edit est différent
ShowMessage('Le mot de passe ne correspond pas à la confirmation.'
);
end
;
Télécharger le programme [6 Ko]
V. Charger le mot de passe▲
Après avoir enregistré le mot de passe, il faut maintenant le charger.
Nous avons besoin de deux composants TButton, un TEdit et un TLabel.
Disposez-les comme ci-dessus.
V-A. Fichier ini▲
uses
IniFiles;
procedure
TForm1.Button1Click(Sender: TObject);
Var
FichierIni : TIniFile;
passe:string
;
begin
//Bouton OK
//Crée le fichier ini s'il n'existe pas
FichierIni:=TIniFile.Create('Monfichier.ini'
);
//Lit le contenu de "Pass" dans "Preference" du fichier ini
passe:=FichierIni.ReadString('Preference'
,'Pass'
,Edit1.Text);
//Détruit l'objet
FichierIni.Free;
//Si le mot de passe correspond alors...
if
Edit1.Text=passe then
begin
//Affiche un message indiquant que le mot de passe est correct
ShowMessage('Le mot de passe est valide.'
);
//J'effectue ce que je veux...
Close; //Quitte l'application
end
else
//Affiche un message indiquant que le mot de passe est incorrect
ShowMessage('Le mot de passe est incorrect.'
);
end
;
Télécharger le programme [6 Ko]
V-B. Base de registre▲
uses
Regitry;
procedure
TForm1.Button1Click(Sender: TObject);
Var
Registre : TRegistry;
pass : string
;
begin
//Bouton OK
//Crée un objet TRegistry
Registre:=TRegistry.Create;
//Définit la clé principale
Registre.RootKey:=HKEY_CLASSES_ROOT;
//"OpenKey" ouvre une clé particulière (False signifie que la
// clé n'est pas créée si elle n'existe pas
Registre.OpenKey('\MonRep'
,False
);
//Renvoie un string à partir du nom de la valeur
Edit1.Text:=Registre.ReadString('Pass'
);
//Ferme la clé
Registre.CloseKey;
//Détruit l'objet
Registre.Free;
//Si le mot de passe correspond alors...
if
Edit1.Text=pass then
begin
//Affiche un message indiquant que le mot de passe est correct
ShowMessage('Le mot de passe est valide.'
);
//J'effectue ce que je veux...
Close; //Quitte l'application
end
else
//Sinon...
//Affiche un message indiquant que le mot de passe est incorrect
ShowMessage('Le mot est incorrect.'
);
end
;
Télécharger le programme [6 Ko]
Astuce : pour plus de sécurité, vous pouvez crypter votre mot de passe pendant l'enregistrement puis le décrypter avant la comparaison.