mysqlの.netコネクタを使用しています。私は、正しく動作するようだが、有効なログインの詳細でログインボタンをクリックすると、私は正常にログインしたことを教えて、間違ったユーザー/パスのコンボを教えてくれました。複数のelse文が正しく動作しない場合
ここにコードがあり、すべてがそうであるように思われます。
ハッシュされたパスワードがデータベースに入力されたものと一致しているかどうかをチェックします。しかし、何らかの理由で「正常にログインしました」というメッセージボックスが表示された直後に、「間違ったユーザー名とパスワードの組み合わせ」というメッセージボックスが表示されます。
私は過去2日間、どこに間違っていたのか、そしてそのドライビングナットは何かを見つけようとしてきました。私が台無しどこ多分皆さんは見ることができ笑
コード:
try
{
MySqlConnection connection = new MySqlConnection(MyConString);
MySqlCommand command = connection.CreateCommand();
MySqlDataReader Reader;
command.CommandText = "select * from users";
try
{
connection.Open();
}
catch (Exception ex)
{
listBox4.Items.Add(ex);
MessageBox.Show("There has been an error connecting to the user database! Please try again later.");
}
Reader = command.ExecuteReader();
while (Reader.Read())
{
if (textBox4.Text == Reader.GetString(2))
{
string haspass= CryptorEngine.Encrypt(textBox5.Text, true);
if (haspass == Reader.GetString(3))
{
MessageBox.Show("Successfully logged in!");
}
else
{
MessageBox.Show("Wrong Unhashed Username/Password Combination");
}
}
else
{
MessageBox.Show("Wrong Username/Password Combination");
}
}
connection.Close();
}
catch (Exception ex)
{
listBox4.Items.Add(ex);
}
なぜSQLクエリ( 'where句)でフィルタリングをしないのですか? 'reader 'を使って返される行の数を確認することができます。HasRows' – Nasreddine
いいえ。最初のifステートメントは、ユーザー名がデータベースに存在するかどうかをチェックし、存在する場合はパスワードをチェックします。ユーザー名が存在しない場合は、「間違ったユーザー名とパスワードの組み合わせ」というメッセージが表示されます –
'select *によってユーザーから返されたものは? – sll