Bonsoir à tous,
J'essaye de créer un moyen pour gérer une connexion de type LOGIN // PASSWORD, avec deux types d'utilisateurs différents. Les paires (login, password) doivent se trouver dans un fichier texte. J'ai donc pensé à me servir d'un fichier texte de la forme :
"test.txt"
Code :
- ***ADMIN***
- log1 // pass1
- log2 // pass2
- ***USER***
- user1 // pass1
- user2 // pass2
- user3 // pass3
|
Je teste le procédé via le code suivant :
Code :
- #include <fstream>
- #include <string>
- #include <iostream>
- #include <limits>
- using namespace std;
- void lecture();
- void ecriture();
- int main()
- {
- char choix;
- cout<<"(L)ecture ou (E)criture : ";
- cin>>choix;
- if(toupper(choix)=='L')
- lecture();
- if(toupper(choix)=='E')
- ecriture();
- system("PAUSE" );
- exit(0);
- }
- void lecture()
- {
- system("cls" );
-
- cout<<"Voici la liste des comptes : ";
- cout<<endl<<"-----------------------------"<<endl<<endl;
- ifstream liste("test.txt", ios::in);
- if(liste)
- {
- string ligne;
- while(getline(liste, ligne))
- {
- cout << ligne << endl; // je dois encore gérer le fait de ne
- // pas afficher les password, si
- // quelqu'un a une idée géniale ?
- }
- cout<<endl;
- liste.close();
- }
- else
- cerr << "Impossible d'ouvrir le fichier !" << endl;
- }
- void ecriture()
- {
- system("cls" );
-
- char _p;
- while((toupper(_p)!='A') && (toupper(_p)!='U'))
- {
- cout<<"Creation d'un compte admin (A) ou utilisateur (U) ? ";
- cin>>_p;
- }
-
- fstream compte("test.txt", ios::in | ios::out | ios::ate);
-
- if(compte)
- {
- string s, u;
-
- cout<<"Nouveau LOGIN : ";
- cin>>s;
- cout<<"Nouveau PASS : ";
- cin>>u;
- string admin = "***ADMIN***", user = "***USER***";
-
- if(toupper(_p)=='A')
- {
- cout<<endl<<"admin"<<endl;
- string ligne;
-
- while(getline(compte, ligne))
- {
- cout<<endl<<"boucle"<<endl; // le programme ne passe jamais
- // par ici !!
- if(strstr(ligne.c_str(), admin.c_str()))
- break;
- }
- cout << "ecriture" << endl;
- compte << endl << s << " // " << u;
- }
- if(toupper(_p)=='U')
- {
- cout<<endl<<"user"<<endl;
- string ligne;
-
- while(getline(compte, ligne))
- {
- cout<<endl<<"boucle"<<endl; // le programme ne passe jamais
- // par ici !!
- if(strstr(ligne.c_str(), user.c_str()))
- break;
- }
- cout << "ecriture" << endl;
- compte << endl << s << " // " << u;
- }
- cout << "fini" << endl;
-
- compte.close();
- }
- else
- cerr << "Impossible d'ouvrir le fichier!"<<endl;
-
- }
|
La compilation se déroule sans problème, mais lors de l'exécution, si je teste l'écriture, j'ai ceci :
Code :
- Creation d'un compte admin (A) ou utilisateur (U) ? a
- Nouveau LOGIN : test
- Nouveau PASS : coucou
- admin
- ecriture
- fini
- Appuyez sur une touche pour continuer...
|
Le programme ne rentre donc jamais dans la boucle pour détecter les chaînes de caractère "***ADMIN***" et "***USER***" , et en plus l'écriture ne se produit pas dans mon fichier texte... Quelqu'un aurait-il une idée pour m'aider ?
D'avance merci