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!