Delphipage - la reference en Delphi
Accueil - Astuces - Composants - Programmes - Tutoriaux - Livres - Liens
 Sources
- Astuces
- Composants
- Programmes
- Tutoriaux
 Rechercher
- Delphipage
- Ngscan
 Ressources
- Lexique Delphi
- Livres
- News
- Patchs Delphi
 Liens
- Borland France
- CodeGear
- Les meilleurs sites


Tutoriaux - Mot de passe

Présentation

Un mot de passe permet de sécuriser un programme ou une partie d'un programme. Il permet de restraindre l'accès aux utilisateurs. Le ou les administrateur(s) ayant le mot de passe peut alors accèder à certaines options du 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.

Ce tutorial a pour but de vous montrer comment gérer un mot de passe mais également de vous montrer les méthodes (base de registres et fichier ini) pour enregistrer des données.

Description

Lors de l'éxecution d'un programme, une boite de dialogue peut vous demander un mot de passe pour accèder aux porgrammes.
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.


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 éxecution.



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
Close; //Quitte l'application
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text='delphi' then //Si le texte de l'edit est "delphi" alors...
ShowMessage('Mot de passe correct !') //On affiche un message indiquant que le mot de passe est correct
else //Sinon...
ShowMessage('Mot de passe incorrect !'); //On affiche un message indiquant que le mot de passe est incorrect
end;

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.
  

Mot de passe dans le source du programme    [ 08-10-2001 ]
 Permet de sécuriser l'accès à un programme.
Télécharger :  [5 Ko] [Télécharger mpass1.zip]

Auteur : Yoann
Site internet :
http://delphipage.free.fr/


Changer le mot de passe

Après avoir valider 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, deux TEdit, deux TLabel. Disposez ces composants comme ci dessus.
Le bouton Annuler permet de quitter l'application.

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

Fichier ini


Un fichier ini est utilisé pour sauvegarder une information. Dans notre exemple se 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
ShowMessage('Le mot de passe est valide.'); //On affiche un message indiquant que le mot de passe est valide
FichierIni:=TIniFile.Create('monfichier.ini'); //Ouvre le fichier ini (si il n'existe pas, le fichier est alors créé)
FichierIni.WriteString('Preference','Pass',Edit1.Text); //Enregistre le mot de passe
FichierIni.Free; //Détruit l'objet
Close;
end
else //Sinon...
ShowMessage('Le mot de passe ne correspond pas à la confirmation.'); //On affiche un message indiquant qu'il y a une différence entre les deux edit
end;

Le fichier ini sera par défaut dans le reperetoire Windows.

Enregistrer un mot de passe avec un fichier ini    [ 08-10-2001 ]
 Permet l'enregistrement d'un mot de passe en utilisant le fichier ini.
Télécharger :  [5 Ko] [Télécharger enrpass1.zip]

Auteur : Yoann
Site internet :
http://delphipage.free.fr/

Base de registre

La base de registre est aussi utiliser pour l'enregistrement de données.

uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
Var Registre : TRegistry;
begin
//Bouton OK
if Edit1.Text=Edit2.Text then //Si le texte des deux edit est le même alors...
begin
ShowMessage('Le mot de passe est valide.'); //Affiche un message indiquant que le mot de passe est valide
Registre:=TRegistry.Create; //Crée un objet TRegistry
Registre.RootKey:=HKEY_CLASSES_ROOT; //Définit la clé principale
Registre.OpenKey('\MonRep',True); {"OpenKey" ouvre une clé particulière (True signifie que la clé est crée si elle n'existe pas}

Edit1.Text:=Registre.ReadString('Pass'); //Renvoie un string à partir du nom de la valeur
Registre.CloseKey; //Ferme la clé
Registre.Free; //Détruit l'objet
end
else //Sinon...
ShowMessage('Le mot de passe ne correspond pas à la confirmation.'); //On affiche un message indiqant que le texte des deux edit est différent
end;

La classe TRegIniFile est un dérivé de la classe TRegistry. Elle apporte les méthodes pour manipuler la base de registre comme un fichier ini.

Enregistrer un mot de passe avec la base de registre   [ 08-10-2001 ]
 Permet l'enregistrement d'un mot de passe en utilisant la base de registre.

Télécharger :  [6 Ko] [Télécharger enrpass2.zip]

Auteur : Yoann
Site internet :
http://delphipage.free.fr/


Charger le mot de passe

Après avoir enregistrer 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.

Fichier ini

uses IniFiles;

procedure TForm1.Button1Click(Sender: TObject);
Var FichierIni : TIniFile;
passe:string;
begin
//Bouton OK
FichierIni:=TIniFile.Create('Monfichier.ini'); //Crée le fichier ini si il n'existe pas
passe:=FichierIni.ReadString('Preference','Pass',Edit1.Text); //Lit le contenu de "Pass" dans "Preference" du fichier ini
FichierIni.Free; //Détruit l'objet
if Edit1.Text=passe then //Si le mot de passe correspond alors...
begin
ShowMessage('Le mot de passe est valide.'); //Affiche un message indiquant que le mot de passe est correct
//J'effectue ce que je veux
Close; //Quitte l'application
end
else
ShowMessage('Le mot de passe est incorrect.'); //Affiche un message indiquant que le mot de passe est incorrect
end;

Charger un mot de passe avec un fichier ini   [ 08-10-2001 ]
 Permet le chargement d'un mot de passe en utilisant le fichier ini.

Télécharger :  [5 Ko] [Télécharger chpass1.zip]

Auteur : Yoann
Site internet :
http://delphipage.free.fr/

Base de registre


uses Regitry;

procedure TForm1.Button1Click(Sender: TObject);
Var Registre : TRegistry;
pass:string;
begin
//Bouton OK
Registre:=TRegistry.Create; //Crée un objet TRegistry
Registre.RootKey:=HKEY_CLASSES_ROOT; //Définit la clé principale
Registre.OpenKey('\MonRep',False);
{"OpenKey" ouvre une clé particulière (False signifie que la clé n'est pas crée si elle n'existe pas}
Edit1.Text:=Registre.ReadString('Pass'); //Renvoie un string à partir du nom de la valeur
Registre.CloseKey; //Ferme la clé
Registre.Free; //Détruit l'objet
if Edit1.Text=pass then //Si le mot de passe correspond alors...
begin
ShowMessage('Le mot de passe est valide.'); //Affiche un message indiquant que le mot de passe est correct
//J'effectue ce que je veux
Close; //Quitte l'application
end
else //Sinon...
ShowMessage('Le mot est incorrect.'); //Affiche un message indiquant que le mot de passe est incorrect
end;

Mot de passe avec la base de registre   [ 08-10-2001 ]
 Permet le chargement d'un mot de passe en utilisant la base de registre.

Télécharger :  [6 Ko] [Télécharger chpass2.zip]

Auteur : Yoann
Site internet :
http://delphipage.free.fr/

Pour plus de sécuriter, vous pouvez crypter votre mot de passe pendant l'enregistrement puis le décrypter avant la comparaison (ou crypter le mot de passe qui vient d' être rentrer par l'utilisateur et le comparer).

Tous droits réservés - Contacts
Haut de la page