Windows Forms: Nach 3 Versuche Benutzername und Passwort fehlgeschlagen. Code eingeben und wieder gelöscht?
Hallo,
wie programmiert ich die Codeeingabe und Fehlversuche wieder gelöscht?
Aufgabe:
Wird dreimal hintereinander ein falscher Benutzername oder ein falsches Passwort eingegeben, wird die GUI unter 4. durch ein Label „lbl_code“ und ein durch ein Textfeld „txt_code“ ergänzt. Die Eingabe von Benutzername und Password ist nicht mehr möglich. Nach Eingabe des Codes „0815“ zeigt die GUI wieder den Grundzustand an und die Fehlversuche werden gelöscht.
Gruß
1 Antwort
Du wirst wahrscheinlich den Einlogg-Versuch über ein Event wie zB einen Button auslösen. Schreib einen Zähler, der jedesmal erhöht wird und nach 3 mal aktualisierst du die GUI.
Textboxen kannst du über die Visible-Eigenschaft verstecken.
int wrongPasswords = 0;
if(textbox_password.Text != passwort)
{
wrongPasswords++;
if(wrongPasswords>3)
{
textbox_password.Visible = false;
textbox_code.Visible = true; //muss davor auf false gesetzt sein
}
}
Mit einem anderen Event überprüfst du dann, ob 0815 eingegeben wurde, und setzt dann die Visible-Properties wieder zurück.
Hey,
bist du dir sicher, dass string passwort der Inhalt aus der Textbox sein soll? Normal speichert man Passwörter ja in der Datenbank und vergleicht dann das aus der Textbox mit dem Eintrag in der Db
So kann das im if (txt_pwd.Text != password) nur übersprungen werden
Hey, das Probleme ist: zählt nicht bis 3 und kann keine code eingeben. Kannst du mir ein Programm programmieren?
Ja, er kann nicht bis 3 zählen, weil der Zähler im if erhöht wird, welches nie ausgeführt wird, weil die Condition immer true sein wird so wie es jetzt ist
Ich fürchte nicht, dass ich das alles für dich machen kann, ich hab morgen eine Prüfung, hab deine Datenbank nicht, etc...
Ich nehme an, du musst zuerst das Passwort aus der Datenbank bekommen, mit dem du dann vergleichst
Vielen Dank für Ihren Antwort. Leider hat nicht richtig geklappt.
namespace Projektarbeit_Pförtneranlage
{
public partial class FormLogin : Form
{
public FormLogin()
{
InitializeComponent();
}
//Verbindungszeichenfolge
string cs = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\patri\Downloads\LoginApplicationSourceCode\LoginApplicationSourceCode\LoginApplication\LoginApplication\MyDatabase.mdf;Integrated Security=True;Connect Timeout=30;";
private void button2_Click(object sender, EventArgs e)
{
string username = txt_name.Text;
string password = txt_pwd.Text;
int wrongpassword = 0;
if (txt_pwd.Text != password)
{
wrongpassword++;
if (wrongpassword > 3)
{
txt_pwd.Visible = false;
txt_code.Visible = true;
}
}
try
{
//Erstellen Sie SqlConnection
SqlConnection con = new SqlConnection(cs);
SqlCommand cmd = new SqlCommand("Select * from tbl_Login where UserName=@username and Password=@password", con);
cmd.Parameters.AddWithValue("@username", txt_name.Text);
cmd.Parameters.AddWithValue("@password", txt_pwd.Text);
con.Open();
SqlDataAdapter adapt = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapt.Fill(ds);
con.Close();
int count = ds.Tables[0].Rows.Count;
//Wenn count gleich 1 ist, wird die Form frmMain angezeigt
if (count == 1)
{
MessageBox.Show("Anmeldung erfolgreich!");
this.Hide();
FormGUI fm = new FormGUI();
fm.Show();
}
else
{
MessageBox.Show("Login Failed!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}