С этими двумя строками:
command.CommandText = "select * from users";
while (Reader.Read())
{
}
Вы читаете всех пользователей обратно из базы данных и перебираете все возвращенные элементы.После этого вы получите:
if (textBox4.Text == Reader.GetString(2))
{
....
}
else
{
MessageBox.Show("Wrong Username/Password Combination");
}
С этим кодом вы распечатаете сообщение «Неверное имя пользователя / пароль» для каждого пользователя, который не введен в поле ввода.
Вы можетелибо просто найдите конкретного пользователя, введенного в форму:
command.CommandText = "select * from users where username = @username";
command.Parameters.AddWithValue("@username", textBox4.Text);
, либо просто напечатайте одно сообщение об ошибке:
bool loggedIn = false;
while (Reader.Read())
{
if (textBox4.Text == Reader.GetString(2))
{
string haspass= CryptorEngine.Encrypt(textBox5.Text, true);
if (haspass == Reader.GetString(3))
{
loggedIn = true;
}
}
}
if (loggedIn)
{
MessageBox.Show("Successfully logged in!");
}
else
{
MessageBox.Show("Wrong Unhashed Username/Password Combination");
}
Хотя вы могли бы структурировать это лучше.
На самом деле, если вы отправите имя пользователя и пароль вниз, вы можете выполнить проверку за один раз.Если пользователь с таким именем отсутствует или пароль неправильный, результаты не будут возвращены, но если комбинация верна, то будет ровно один результат, и вы будете знать, что пользователь действителен без каких-либо дальнейших действий.проверка.