Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

sprawdzanie poprawności hasła z pliku *.txt

Ostatnio zmodyfikowano 2013-12-21 17:40
Autor Wiadomość
Masterpc16
Temat założony przez niniejszego użytkownika
sprawdzanie poprawności hasła z pliku *.txt
» 2013-12-20 19:03:41
Witajcie mam taki problem programuje w dev c++ i chciałem zrobić program do logowania i zakładania kont. Dane do konta są eksportowane do pliku txt który się nazywa tak samo jaki jest login użytkownika. Wszystko działa oprócz logowania gdy program sprawdza poprawność haseł to się zacina używam tam "!=" a gdy użyję "==" to działa tylko że na odwrót poniżej zamieszczam cały kod oraz linijki w którym występuje ten problem
C/C++
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
    string odpowiedz, login, haslo, rehaslo, mail, haslo1, login1;
   
    cout << "Witamy w systemie. Czy posiadasz u nas konto?: ";
    cin >> odpowiedz;
    if( odpowiedz == "nie" || odpowiedz == "Nie" || odpowiedz == "NIE" || odpowiedz == "NiE" || odpowiedz == "NIe" || odpowiedz == "nIE" || odpowiedz == "nIe" || odpowiedz == "niE" )
    {
        cout << "Podaj login: ";
        cin >> login;
        if( ifstream( login.c_str() ) )
        {
            cout << "Masz juz konto w serwisie." << endl;
        }
        else
        {
            cout << "Podaj adres e-mail: ";
            cin >> mail;
            if(( mail.find( '@' ) == string::npos ) ||(( mail.find( '.' ) ) == string::npos ) )
            {
                while(( mail.find( '@' ) ) == string::npos ||( mail.find( '.' ) ) == string::npos )
                {
                    cout << "Podales zly adres mail! Podaj go jeszcze raz ";
                    cin >> mail;
                }
            }
            cout << "Podaj haslo: ";
            cin >> haslo;
            cout << "Podaj ponownie haslo: ";
            cin >> rehaslo;
            while( haslo != rehaslo )
            {
                cout << "Cos poszczlo nie tak :( podaj jeszcze raz haslo: ";
                cin >> haslo;
                cout << "Podaj jeszcze raz haslo dla poprawnej weryfikacji: ";
                cin >> rehaslo;
            }
            ofstream dane( login.c_str() );
            dane << login << endl;
            dane << haslo << endl;
            dane << mail << endl;
            dane.close();
            cout << "Dziekujemy wlasnie zalozyles konto w naszym serwisie" << endl;
        }
    }
    else
    {
       
        ifstream dane( login.c_str() );
        getline( dane, login );
        getline( dane, haslo );
        dane.close();
        cout << "Podaj login: ";
        cin >> login1;
        cout << "Podaj haslo: ";
        cin >> haslo1;
        while( haslo1 != haslo || login1 != login );
       
        {
           
            cout << "Wprowadziles bledne haslo lub login. Podaj jeszcze raz login: ";
            cin >> login1;
            cout << "Podaj haslo: ";
            cin >> haslo1;
        }
        cout << "Poprawnie sie zalogowales." << endl;
       
    }
   
    getchar();
    return 0;
}


C/C++
ifstream dane( login.c_str() );
getline( dane, login );
getline( dane, haslo );
dane.close();
cout << "Podaj login: ";
cin >> login1;
cout << "Podaj haslo: ";
cin >> haslo1;
while( haslo1 != haslo || login1 != login );

{
   
    cout << "Wprowadziles bledne haslo lub login. Podaj jeszcze raz login: ";
    cin >> login1;
    cout << "Podaj haslo: ";
    cin >> haslo1;
}
cout << "Poprawnie sie zalogowales." << endl;
P-99705
kubawal
» 2013-12-20 19:19:07
C/C++
ifstream dane( login.c_str() );

login nie jest inicjowany przy logowaniu, więc ścieżka jest pusta i nie sprawdzasz, czy taki plik istnieje.
P-99706
Masterpc16
Temat założony przez niniejszego użytkownika
» 2013-12-20 19:20:45
Czyli wystarczy że sprawdzę czy ten plik istnieje??
P-99707
kubawal
» 2013-12-20 19:28:22
On na pewno nie będzie istniał, bo otwierasz go z pustego łańcucha("")
P-99708
Masterpc16
Temat założony przez niniejszego użytkownika
» 2013-12-20 19:43:07
Jednak dalej mi to nie działa :( oto kawałek kodu
C/C++
{
    logowanie:
    system( "cls" );
    cout << "Witamy w kreatorze logowania" << endl;
    ifstream dane( login.c_str() );
    getline( dane, login );
    getline( dane, haslo );
    dane.close();
    podajlogin:
    cout << "Podaj login: ";
    cin >> login1;
    if( !ifstream( login1.c_str() ) )
    {
        cout << "Nie masz zarejestrowanego konta. Czy przejsc do kreatora rejestracji? " << endl;
        cin >> odp2;
        if( odpowiedz == "tak" || odpowiedz == "Tak" || odpowiedz == "TAK" || odpowiedz == "TaK" || odpowiedz == "TAk" || odpowiedz == "tAK" || odpowiedz == "tAk" || odpowiedz == "taK" )
        {
            goto rejestracja;
        }
        else
        {
            goto podajlogin;
        }
    }
    cout << "Podaj haslo: ";
    cin >> haslo1;
    while( haslo1 != haslo || login1 != login );
   
    {
       
        cout << "Wprowadziles bledne haslo lub login. Czy chcesz sie zarejestrowac? ";
        cin >> odp;
        if( odpowiedz == "tak" || odpowiedz == "Tak" || odpowiedz == "TAK" || odpowiedz == "TaK" || odpowiedz == "TAk" || odpowiedz == "tAK" || odpowiedz == "tAk" || odpowiedz == "taK" )
        {
            goto rejestracja;
        }
        else
        {
           
           
            cout << "Podaj jeszcze raz login: ";
            cin >> login1;
            cout << "Podaj haslo: ";
            cin >> haslo1;
        }
       
       
    }
    cout << "Poprawnie sie zalogowales." << endl;
}


system( "PAUSE" );
return 0;
}


dodam że sprawdzam to na utworzonym pliku txt
P-99709
RazzorFlame
» 2013-12-21 15:31:06
Użycie "goto" jest tutaj conajmniej nie potrzebne, a poza tym ciekawe rozwiązanie (ciekawe != wystarczająco dobre)
if( odpowiedz == "tak" || odpowiedz == "Tak" || odpowiedz == "TAK" || odpowiedz == "TaK" || odpowiedz == "TAk" || odpowiedz == "tAK" || odpowiedz == "tAk" || odpowiedz == "taK" )
Wystarczy że użyjesz funkcji
std::tolower()
 która zamienia wszystkie wielkie litery na małe. Wtedy wystarczy że sprawdzisz czy `odpowiedz == "tak"` lub `odpowiedz == "nie"`.
P-99734
Masterpc16
Temat założony przez niniejszego użytkownika
» 2013-12-21 17:40:22
P-99750
« 1 »
  Strona 1 z 1