Parfois, il devient nécessaire de simuler une fenêtre de connexion
en mode console.
Dans ce tutoriel, je vais vous montrer comment faire un
login en C. Pour cela, nous travaillerons en mémoire (donc pas de fichier ni de
base de données).
Pour commencer, on définit deux
(2) constantes de chaine de caractère contenant le nom le nom d’utilisateur et
le mot de passe et deux autres qui stockerons respectivement le code ASCII des
touches entrer et Backspace (effacement). On suppose que le nom d’utilisateur
« username » et que le mot de passe est « password ».
Commençons par demander à l’utilisateur de fournir son nom d’utilisateur en partant du principe qu’il continuera à saisir tant qu’il ne fournit pas le nom d’utilisateur correct (dans notre cas c’est « username »).
On permet la saisie du mot de passe
Voici le code complet : copie du code source dans le sous dossier code source
#define NAME "username"
#define PASS "password"
#define ENTER 13
#define BACKSPACE 8
Commençons par demander à l’utilisateur de fournir son nom d’utilisateur en partant du principe qu’il continuera à saisir tant qu’il ne fournit pas le nom d’utilisateur correct (dans notre cas c’est « username »).
char nom_user [20] ;
do
{
system ("CLS");
printf ("Nom d'utilisateur : ");
scanf("%s", nom_user);
if(strcmp(nom_user,NAME)!=0)
{
Printf ("Nom d'utilisateur
invalide !");
getch ();
}
}while (strcmp(nom_user,NAME)!=0);
Maintenant on il nous reste plus que le mot de passe. Dans la
saisie du mot de passe, on ne doit pas afficher les caractères saisis par
l’utilisateur. A leur place, on affiche
le caractère « * ». Pour effectuer cela, on saisira caractère par caractère. Faites les
déclarations suivantes
char c ; //Stocke le
caractère courant
char mot_pass [20] ; //Mot de
passe final saisie
char chaine [20]; //chaine
utilisé pour faire la saisie initial du mot de passe
int nb ; //compte le
nombre de caractère que contient le mot de passe
int i ; //pour
parcourir les caractères saisis
do
{
printf("Mot de passe : ");
nb=0;
//L’utilisateur
saisie tant qu’il ne tape pas sur la touche entrer
while ((c=getch())!=ENTER)
{
if(c!=BACKSPACE &&
nb<20)
{
chaine [nb]=c;
nb++;
printf("*");
}
else
{
if(nb>0)
{
//Pour gérer l'effacement
nb--;
chaine[nb]='\0';
}
}
}
//On copie tous les caractères contenu
dans la chaine
for(i=0;i<nb; i++)
{
mot_pass[i]=chaine[i];
}
mot_pass[i]='\0'; //On indique le
caractère de fin de ligne
if(strcmp(mot_pass, PASS)!=0)
{
printf("\n Mot de passe
invalide \a\n");
}
}while(strcmp(mot_pass,PASS)!=0);
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<conio.h>
#define NAME "username"
#define PASS "password"
#define ENTER 13
#define BACKSPACE 8
int main()
{
char c,nom_user[20],mot_pass[20],chaine[20];
int nb,i;
do
{
system("CLS");
printf("Nom d'utilisateur : ");
scanf("%s",nom_user);
if(strcmp(nom_user,NAME)!=0)
{
printf("Nom d'utilisateur invalide !");
getch();
}
}while(strcmp(nom_user,NAME)!=0);
do
{
printf("Mot de passe : ");
nb=0;
while((c=getch())!=ENTER)
{
if(c!=BACKSPACE && nb<20)
{
chaine[nb]=c;
nb++;
printf("*");
}
else
{
if(nb>0)
{
//Pour gérer l'effacement
nb--;
chaine[nb]='\0';
}
}
}
//On copie tous les caractères contenu dans la chaine
for(i=0;i<nb;i++)
{
mot_pass[i]=chaine[i];
}
mot_pass[i]='\0'; //On indiquele caractère de fin de ligne
if(strcmp(mot_pass,PASS)!=0)
{
printf("\nMot de passe invalide \a\n");
}
}while(strcmp(mot_pass,PASS)!=0);
return 0;
}
#include <stdlib.h>
#include <string.h>
#include<conio.h>
#define NAME "username"
#define PASS "password"
#define ENTER 13
#define BACKSPACE 8
int main()
{
char c,nom_user[20],mot_pass[20],chaine[20];
int nb,i;
do
{
system("CLS");
printf("Nom d'utilisateur : ");
scanf("%s",nom_user);
if(strcmp(nom_user,NAME)!=0)
{
printf("Nom d'utilisateur invalide !");
getch();
}
}while(strcmp(nom_user,NAME)!=0);
do
{
printf("Mot de passe : ");
nb=0;
while((c=getch())!=ENTER)
{
if(c!=BACKSPACE && nb<20)
{
chaine[nb]=c;
nb++;
printf("*");
}
else
{
if(nb>0)
{
//Pour gérer l'effacement
nb--;
chaine[nb]='\0';
}
}
}
//On copie tous les caractères contenu dans la chaine
for(i=0;i<nb;i++)
{
mot_pass[i]=chaine[i];
}
mot_pass[i]='\0'; //On indiquele caractère de fin de ligne
if(strcmp(mot_pass,PASS)!=0)
{
printf("\nMot de passe invalide \a\n");
}
}while(strcmp(mot_pass,PASS)!=0);
return 0;
}
Merci cet artcle m'a beaucoup aidé
RépondreSupprimerJe veux savoir si il y avait un fichier svp
RépondreSupprimerCet tuto m'a vraiment beaucoup aidé
RépondreSupprimerMerci !
Merci beaucoup, ça m’a été super utile et j’ai bien appris.
RépondreSupprimer