Login mit Speicherung in .txt Datei
-
Hallo, ich will einen Loginvorgang für ein Programmm programmieren.
Dafür soll der Benutzer beim ersten Start ein Benutzername und ein Passwort angeben.
Das wird in einer .txt Datei gespeichert.Wenn er sich dann wieder anmeldet, soll das Programm diese Passwortdatei suchen und wenn sie schon existiert(also bei den folgenden Starten), auslesen und das Passwort abfragen. Wenn er dann das Passwort eingibt, soll das Programm es mit der Eingabe in der Textdatei vergleichen.
Ist das möglich???
Ich bitte um schnelle Hilfe!
Handballfan
-
handballfan schrieb:
Ist das möglich???
Ja, das ist möglich. (schau dir mal fopen, fclose, fputc, ... an)
-
na dann bin ich ja erleichtert.
aber ich mache noch nicht so lange c++, also kann mir vllt jemand ein beispielcode zeigen???
mfg,
handballfan
-
Und morgen kommen wir dann und putzen dein Badezimmer? Was willst du eigentlich wissen?
-
ich will einfach wissen, wie man das macht!!!
ich bin ein noch ein halber anfänger!!!
bitte erklärt mir jemand, wie ich das mache!!!
handballfan
-
Library: stdio.h Prototype: FILE *fopen(const char *filename, const char *mode); Syntax: FILE *fp; fp = fopen( "/etc/printcap", "r");
-
So jetzt liest du dir das durch:
http://willemer.de/informatik/cpp/fileop.htmdann probierst du es selber wenns net klappt dann können wir dir helfen, aber wir werden dir keinesfalls das programm machen. Wir wollen Leuten helfen und keine arbeit abnehmen.
mfg tobZel
-
Als Anfänger möchte man immer Beispielcode sehen, den wird man dir hier aber
leider nicht so schnell geben. Hier mal ein paar Tips/Vorgänge nach welchem
Schema du dein Programm gestalten solltest :
-Passwortabfrage
-Speicherung - booleschen Wert setzen
-Wenn Speicherung vorhanden - Passwortabfrage
-Überprüfe mit dem gespeicherten Text (booleschen Wert sowie Buffer der Txt)
usw.
-
Ich werde morgen mal nen Beispiel Code machen für dich, aber mein Vorredner hat es sehr gut beschrieben, geh mal ein paar Bücher durch oder suche bei Google zu diesem Thema was
Zuerst versuchen sich selbst zu helfen, dann google, und dann das Forum befragen^^
-
Ich hab's dann auch mal probiert...
Gruss noch!#include <iostream> #include <cstdlib> #include <fstream> #include <string> class c_pw{ private: bool dat_ex; std::string fn; std::ifstream din; public: c_pw(std::string _fn){ this->fn=_fn; this->din.open(this->fn.c_str(),std::ios_base::in); if(!this->din) this->dat_ex=false; else this->dat_ex=true; } ~c_pw(void){ if(this->din) this->din.close(); } bool validate(std::string _pw,std::string _nm){ std::string pw,nm; this->din>>pw>>nm; if(pw==_pw&&nm==_nm) return true; else return false; } void save_data(std::string _pw,std::string _nm){ std::ofstream dout; dout.open(this->fn.c_str(),std::ios_base::out); if(!dout){ std::cerr<<std::endl<<"ERROR!!!"; exit(EXIT_FAILURE); } dout<<_pw<<std::endl<<_nm; dout.close(); } bool data_exists(void){ return this->dat_ex; } }; int main(void){ std::cout<<"Ihr Name: "; std::string nm; std::cin>>nm; std::cout<<"Ihr Passwort: "; std::string pw; std::cin>>pw; c_pw pw_dat("pw.dat"); if(pw_dat.data_exists()) { if(!pw_dat.validate(pw,nm)){ std::cerr<<std::endl<<"Ihre Daten konnten nicht validiert werden!"; return EXIT_FAILURE; } } else{ pw_dat.save_data(pw,nm); std::cerr<<std::endl<<"Ihre Daten wurden gespeichert!"; } //... }
-
wie ihr gesagt habt hab ich mir ma diese internet seite durchgelesen und nicht ganz verstanden, aber ich hab schonmal einen ansatz.
hier mein quellcode:
#include <fstream> #include <iostream> using namespace std; int main() { 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("daten.dat", ios::out); f << benutzername << endl; f << passwort <<endl; f.close(); }
jetzt fehlt nur noch, das er beim nächsten start die eingaben mit denen in der datei vergleicht. wie soll ich das denn machen???
mfg
handballfan
-
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!
-
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