Login mit Speicherung in .txt Datei



  • WiredCoder schrieb:

    Du liest einfach die Zeile aus und überprüfst, ob etwas in der txt steht, wenn ja, fragst du den Wert ab und überprüfst ihn mit den Eingaben des Benutzers!

    So spricht vielleicht der Profi, aber ich bin noch ein Halbanfänger.

    Kannste du mir das vllt mal erklären!?!?

    mfg

    handballfan



  • Ich werde es dir nicht in den Mund legen, lediglich etwas Nachschub geben 😉
    Also, wenn du in die txt schreibst, speicherst du den Inhalt. Wenn du
    diesen Inhalt später dann wieder einliest, kannst du ihn einfach mit der
    Variabel vergleichen, die du am Anfang gesetzt hast oder du überprüfst gleich
    den Text ob es das oder das ist.



  • WiredCoder schrieb:

    Ich werde es dir nicht in den Mund legen, lediglich etwas Nachschub geben 😉
    Also, wenn du in die txt schreibst, speicherst du den Inhalt. Wenn du
    diesen Inhalt später dann wieder einliest, kannst du ihn einfach mit der
    Variabel vergleichen, die du am Anfang gesetzt hast oder du überprüfst gleich
    den Text ob es das oder das ist.

    das ist nett ich werde es mal probieren!!!

    mfg

    handballfan



  • Ich hab ma ein wenig weiterprobiert und hab es hinbekommen, das das Programm die in der .txt gespeicherten Eingaben wieder ausliest.

    Wie mache ich es denn jetzt, das das programm prüft, ob die eingaben wie die werte in der txt datei sind.

    mein code:

    #include <fstream>
    #include <iostream>
    using namespace std;
    
    int main()
    {
        string a;
        cout <<"Willkommen! Bitte geben sie ihren Benutzernamen ein:"<<endl;
        string benutzername,passwort;
        cin >>benutzername;
        cout <<"\nGeben sie jetzt das Passwort ein:"<<endl;
        cin >>passwort;
        cout<<endl;
        fstream f;
        f.open("log.dat", ios::out);
        f << benutzername << endl;
        f << passwort <<endl;
        f.close();
    
        fstream c;
        char cstring[256];
        c.open("log.dat", ios::in);
        while (!c.eof())
        {
            c.getline(cstring, sizeof(cstring));
            cout << cstring << endl;
        }
        c.close();
        system ("PAUSE");
    }
    

    mfg

    handballfan



  • Ok, weil ich dich nicht in die Irre führen möchte, hab ich dir mal schnell was geschrieben:

    #include <cstdlib>
    #include <iostream>
    #include <conio.h>
    #include <windows.h>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    int main(void)
    {
        string Benutzername;
        string Passwort;
    
        cout<<"Benutzernamen eingeben:"<<endl;
        cin>>Benutzername;
        cout<<"Passwort eingeben:"<<endl;
        cin>>Passwort;
    
        cout<< Benutzername << ", " << Passwort << "" <<endl;
    
        fstream f;
        f.open("daten.dat", ios::out);
        f << Benutzername << endl;
        f << Passwort <<endl;
        f.close(); 
    
    ifstream fd_datei;
    string s_userInput;
    string s_realPsw;
    fd_datei.open("daten.dat",ios::in);
    getline(fd_datei, s_realPsw, '\n');
    cin >> s_userInput;
    if(s_userInput == s_realPsw)
    {
        cout<<"Passwort ist richtig!"<<endl;
    }
    else
    {
        cout<<"Passwort war leider falsch!"<<endl;
    }
    
         getch();
         }
    


  • das funktioniert wunderbar !

    kannste mir vllt nochma die zeilen

    ifstream fd_datei; 
    string s_userInput; 
    string s_realPsw; 
    fd_datei.open("daten.dat",ios::in); 
    getline(fd_datei, s_realPsw, '\n'); 
    cin >> s_userInput;
    

    erklären.

    mfg

    handballfan



  • ifstream fd_datei;
    

    Übergibt ein Objekt von ifstream nach fd_datei (Variabel) um unter dieser
    Variable den Text zu öffnen, speichern usw.

    string s_userInput;
    

    Hiermit überprüfen wir später den Text.

    string s_realPsw;
    

    Hier genau das gleiche.

    fd_datei.open("daten.dat",ios::in);
    

    Hier öffnen wir die Datei über das Objekt "fd_datei" (Variabel) und lesen es ein, darum "ios::in".

    getline(fd_datei, s_realPsw, '\n');
    

    getline=Wir holen uns die einzelnen Zeilen.

    cin >> s_userInput;
    

    Warten auf Eingabe.



  • Vielen Dank!

    Jetzt habe ich alles verstanden!!!

    Aber eine Frage hab ich noch.

    Wie macht man das jetzt, das er beim zweiten Start des Programmes direkt das Passwort und den Benutzernmen abfragt???

    Erklär mir das bitte, dann hab ich auch alles.

    mfg

    handballfan



  • Dazu speicherst du einfach die Variable, liest sie direkt aus und Voi Lá!



  • Das versteh ich nicht.

    Kannste mir vllt mal ein beispiel zeigen???

    mfg

    handballfan



  • #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
    
    int passwort;
    int a = 45;
    
    cout<<"Los gib dein Passwort ein!"<<endl;
    
    cin>>passwort;
    
    if (passwort==a)
    {
    cout<<"richtig"<<endl;
    }
    
    else {
    
    cout<<"falsch"<<endl;
    }
    
    system("PAUSE");
    return 0;
    }
    

    Ist nicht das was du suchst, ist aber ein Beispiel wie du es angehen solltest.
    Wenn du meinen Code von vorhin verstanden hast, wirst du diesen "Beispielcode" auch mit leichtigkeit interpretieren können und ihn so umformen und anpassen, dass du deine Ziel erreichst. Muss jetzt aber weiter arbeiten. Komme nachher wieder.



  • Mein erstes Beispiel hast du wohl nicht wirklich verstanden, weil es da eine Klasse hatte und so, oder?

    Vielleicht blickst du hier ja durch:

    #include <iostream>
    #include <fstream>
    #include <string>
    
    static const char *fn="pw.txt";
    
    bool validate_pw(std::string _pw,std::string _nm){
    	std::ifstream din;
    	din.open(fn,std::ios_base::in);
    
    	if(!din){ //Existiert noch keine Datei pw.txt?
    		std::ofstream dout;
    		dout.open(fn,std::ios_base::out);
    
    		if(!dout){
    			std::cerr<<std::endl<<"ERROR!!!"<<std::endl;
    			return false;
    		}
    		else{
    			//Nach dem pw.txt erfolgreich erstellt wurde
    			//wird nun das Passwort und in die naechste
    			//Zeile der Benutzername gespeichert.
    			dout<<_pw<<std::endl<<_nm;
    			dout.close();
    			return true;
    		}
    	}
    	else{
    		//Passwort und Benutzername werden aus pw.txt
    		//ausgelesen und...
    		std::string pw,nm;
    		din>>pw>>nm;
    		din.close();
    
    		//...mit der Benutzereingabe verglichen.
    		if(pw==_pw&&nm==_nm)
    			return true;
    		else
    			return false;
    	}	
    }
    
    int main(void){
    	std::cout<<"Ihr Name: ";
    	std::string nm;
    	std::cin>>nm;
    
    	std::cout<<"Ihr Passwort: ";
    	std::string pw;
    	std::cin>>pw;
    
    	if(!validate_pw(pw,nm)){
    		//Das Passwort ist falsch oder es ist ein Fehler
    		//aufgetreten innerhalb von validate_pw().
    	}
    }
    


  • Hey, dein code funktioniert gut.

    aber ich habe hier meinen eigenen code:

    #include <cstdlib> 
    #include <iostream> 
    #include <conio.h> 
    #include <windows.h> 
    #include <string> 
    #include <fstream>
    using namespace std;
    
    int main()
    {
         string ja="vorhanden";
         string sprung;
    
        string benutzername,passwort;
        cout <<"Willkommen! Sie starten zum ersten Mal!\n\nBitte geben sie einen Benutzernamen an:"<<endl<<endl;
        cin >>benutzername;
    
        cout <<"\nGeben sie jetzt ihr gewuenschtes Passwort ein:"<<endl<<endl;
        cin >>passwort;
        cout<<endl;
    
        fstream benutzer;
        benutzer.open ( "bn.dat" , ios :: out);
        benutzer << benutzername<<endl;
        benutzer.close ();
    
        fstream pass;
        pass.open ( "pw.dat" , ios :: out);
        pass << passwort << endl;
        pass.close ();
    
        fstream kontrolle;
        kontrolle.open ( "da.dat" , ios :: out);
        kontrolle << ja;
        kontrolle.close ();
    
        ifstream test;
        test.open ( "da.dat" , ios :: in);
        getline (test, sprung);
    
        cout <<"Benutzer """ << benutzername <<""" erfolgreich angelegt!" <<endl;
    
            system ("cls");
            system("C:\\WINDOWS\\system32\\cmd.exe");
            return 0;
    }
    

    das einzige problem ist, das ich prüfen will, ob die datein da.dat schon existiert und wenn ja, will ich den einlogvorgang starten. wenn sie nicht existiert (wie beim ersten start), will ich den vorgang starten, das er sich anmelden kann.

    wie geht das.

    mfg

    handballfan



  • Der code eben war ein wenig komisch.

    #include <cstdlib> 
    #include <iostream> 
    #include <conio.h> 
    #include <windows.h> 
    #include <string> 
    #include <fstream>
    using namespace std;
    
    int main()
    {
    
        string benutzername,passwort;
        cout <<"Willkommen! Sie starten zum ersten Mal!\n\nBitte geben sie einen Benutzernamen an:"<<endl<<endl;
        cin >>benutzername;
    
        cout <<"\nGeben sie jetzt ihr gewuenschtes Passwort ein:"<<endl<<endl;
        cin >>passwort;
        cout<<endl;
    
        fstream benutzer;
        benutzer.open ( "bn.dat" , ios :: out);
        benutzer << benutzername<<endl;
        benutzer.close ();
    
        fstream pass;
        pass.open ( "pw.dat" , ios :: out);
        pass << passwort << endl;
        pass.close ();
    
        cout <<"Benutzer """ << benutzername <<""" erfolgreich angelegt!" <<endl;
    
            system ("cls");
            system("C:\\WINDOWS\\system32\\cmd.exe");
            return 0;
    }
    

    der ist besser und auch der richtige.

    wie soll ich da jetzt noch prüfen lassen, ob die passwort und benutzerdatei schon existieren???

    mfg

    handballfan



  • goto anywhere hat ja schon einen guten Quellcode, der auch funktioniert, eingestellt.

    aber könntest du mir den mal zeile für zeile erklären, was das alles bedeutet!?!?

    mfg

    handballfan



  • wie soll ich da jetzt noch prüfen lassen, ob die passwort und benutzerdatei schon existieren???

    Prüf einfach, ob sich überhuapt was in der Datei befindet, wenn ja, starte die Abfrage!
    Oder du machst es so, dass wenn du nichts überprüfen konntest, du eine Ausgabe machst.



  • WiredCoder schrieb:

    wie soll ich da jetzt noch prüfen lassen, ob die passwort und benutzerdatei schon existieren???

    Prüf einfach, ob sich überhuapt was in der Datei befindet, wenn ja, starte die Abfrage!
    Oder du machst es so, dass wenn du nichts überprüfen konntest, du eine Ausgabe machst.

    Wenn diese Datei evtl. noch garnicht existiert???
    Nein, er muss erst überprüfen ob die Datei überhaupt existiert und das geht so:
    (Wenn das öffnen der Datei fehlschlägt, ist sie wohl einfach nicht vorhanden.)

    #include <iostream> 
    #include <fstream> 
    #include <string> 
    
    static const char *fn="pw.txt"; 
    
    bool validate_pw(std::string _pw,std::string _nm){ 
        std::ifstream din; 
        din.open(fn,std::ios_base::in); 
    
        if(!din){ //Existiert noch keine Datei pw.txt? 
            std::ofstream dout; 
            dout.open(fn,std::ios_base::out);
        . . .
    


  • @ goto anywhere
    Du solltest versuchen, ihm nicht alles in den Mund zu legen. Mittlerweile
    haben wir ihm genug Information und Codes gegeben!


Anmelden zum Antworten