-2

以下の場合、何らかの理由で最初の条件をチェックしますが、2 番目の条件はチェックしません。

最初はデータベースに対してユーザー/パスワードをチェックし、2番目はハードコードのユーザーとパスワードです。

ハードコードされたユーザー/パスワードを入力すると、db ユーザー/パスワードのみを使用して通過できません。

何が間違っているのですか?

if ((userTxt == userDB && passwdTxt == passwdDB) ||
    (userTxt == "user" && passwdTxt == "test"))
{
    switch (frmMdiMain.loginPageText)
    {
        case "exit":
            mainPage.Hide();
            Application.Exit();
            break;
        case "internal":
            mdiInternalUse internUseForm = new mdiInternalUse();
            internUseForm.Show();
            this.Close();
            break;
        default:
            break;
    }
}
4

1 に答える 1

0

userTxt使用している言語がないと答えるのは難しいですが、問題はとの値がとで表されるものとpasswdTxtは異なるオブジェクトと比較されることだと思います"user""test"

たとえば、のC / C ++userTxtはへのポインタでありchar、`"user"とは異なるアドレスを持ちます。

Javaでは、との値を保持するオブジェクトStringは異なる場合もあります。userTxt"user"

文字列に対して適切な比較を実行する必要があります(たとえばstrcmp()、Cで使用sts::string、C ++で使用userTxt.compare("user")、Javaで使用)

于 2012-05-19T17:05:33.543 に答える