0

Visual Studio 2010でWebアプリケーションを開発し、このアプリケーションにユーザーログインシステムを追加しようとしています。これまでのところ、ユーザーのパスワードの検証に問題があります。プログラムは、そのユーザー名に関連付けられているパスワードと一致していても、すべてのパスワードが正しくないことを通知します。これは私が息子に書いたコードです:

    protected void n_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        con.Open();
        string cmdStr = "select count(*) from Registration where UserName='" + TextBoxUserName.Text + "'";
        SqlCommand CheckUser = new SqlCommand(cmdStr, con);
        int Temp = Convert.ToInt32(CheckUser.ExecuteScalar().ToString());
        if (Temp == 1)
        {
            string cmdStr2 = "Select Password from Registration where UserName ='" + TextBoxUserName.Text + "'";
            SqlCommand pass = new SqlCommand(cmdStr2, con);
            string password = pass.ExecuteScalar().ToString();
            con.Close();

            if (password == TextBoxPassword.Text)
            {
                Session["New"] = TextBoxUserName.Text;
                Response.Redirect("HomePage.aspx");
            }
            else
            {
                Label1.Visible = true;
                Label1.Text = "Password is invalid";
            }
        }
        else
        {
             Label1.Visible = true;
             Label1.Text = "Username is invalid";
        }


    }
}

}

入力されたパスワードに関係なく、プログラムは「パスワードが無効です」と出力します。これは、問題がifステートメントの最初の部分にあることを示していますか?またはそれが使用する変数?無効なユーザー名も同じようにフラグを立てることに言及する価値があるかもしれません、そしてこれはうまくいきます。

前もって感謝します :)

4

2 に答える 2

1

代わりにASP.NET認証を使用してください。

于 2012-04-30T17:11:27.647 に答える
1

あなたがしていることは、それがすることになっていることに対してあまりにも複雑に思えます。

編集:ユーザーがコメントした後、回答を編集しました:

 public bool Login(String uName, String pasw)
{
    using (SqlConnection myConnection = new SqlConnection(connString))
    {
        string oString = "Select ID from yourTable where username = @username AND paswoord = @password";
        SqlCommand oCmd = new SqlCommand(oString, myConnection);
        oCmd.Parameters.AddWithValue("@username", uName);
        oCmd.Parameters.AddWithValue("@password", pasw);
        string id = null;
        myConnection.Open();
        using (SqlDataReader oReader = oCmd.ExecuteReader())
        {              
            while (oReader.Read())
            {
                id = oReader["id"].ToString();
            }
            myConnection.Close();
        }
        if (id == null)
        {
            return false;
        }
        else
        {
            return true;
        }         
    }
}

あなたはこのようなことを試すことができます。また、それはそれとは何の関係もないかもしれませんが、属性に「パスワード」という名前を付けるときにそれを好まないデータベースもあります。「pw」や「pasw」などに変更してみてください。

于 2012-04-30T18:03:39.920 に答える