Ich schreibe ein Programm (vor allem Bildungszweck, aber wenn ich es mag, werde ich wahrscheinlich später in einem größeren Projekt verwenden) für Benutzernamen + Passwort-Authentifizierung. Was ich bis jetzt "gearbeitet" habe, bedeutet, dass es keine Fehler gibt, aber es verhält sich etwas komisch. Es hat STUFF() etwa 9 Mal ausgeführt (ich habe die genaue Ausgabe nicht gespeichert), bevor es beendet wurde, wenn es nur einmal gemacht werden soll.Benutzername und Passwort zu überprüfen
Wie kann ich STUFF() nur einmal machen? Wie kann ich die Passworteingabe unsichtbar machen? Und wie kann ich generell Sicherheit/Syntax verbessern oder kürzer machen?
#include <iostream>
using namespace std;
void STUFF()
{
cout << "Doing stuff..." << endl;
}
int CREDS;
void AUTH()
{
cout << "Username: "; string USER; cin >> USER;
cout << "Password: "; string PASS; cin >> PASS;
if (USER == "josh" and PASS == "passwd")
{
CREDS = 0;
}
else
{
CREDS = 1;
};
}
void RETRY()
{
cout << "Authentication failed! Try again? [Y/n]" << endl; char REPLY; cin >> REPLY;
if (REPLY == 'Y' or REPLY == 'y')
{
AUTH();
}
else if (REPLY == 'N' or REPLY == 'n')
{
cout << "Exiting..." << endl;
}
else
{
RETRY();
};
}
int main()
{
AUTH();
if (CREDS == 0)
{
STUFF();
return 0;
}
else if (CREDS == 1)
{
RETRY();
};
}
Kann nicht reproduzieren: https://ideone.com/EPnGn4 – mascoj
Auch Ihr RETRY-Code wird sich nicht so verhalten, wie Sie es erwarten. Es wird nicht zurückgeschleift, selbst wenn Sie "Y" eingeben, wird das Programm beendet. – mascoj
Ich testete erneut (es ist ein Punkt, um Benutzer zu erhalten und falsch zu wiederholen). Wählen Sie nicht aus und wählen Sie ja, dann bekommen Sie richtig, nur verlassen, ohne etwas zu tun. EDIT: reproduzierte das Ergebnis noch zwei Mal dann bekam der Benutzer/pass das erste Mal richtig und es gedruckt "Auth fehlgeschlagen! Versuchen Sie es erneut?" genau 9 mal – Josh