C#textBox验证

时间:2015-02-20 14:55:22

标签: c# asp.net string authentication

当我刚开始使用C#时,我开始时遇到了一些麻烦。我正在尝试创建一个简单的登录系统,这是我到目前为止所做的:

private void button1_Click(object sender, EventArgs e)
{
    string username = "Admin";
    string password = "root";

    if (!string.IsNullOrEmpty(textBox1.Text) && (!string.IsNullOrEmpty(textBox2.Text)))
        MessageBox.Show("Fields are not filled");

    if (!string.IsNullOrEmpty(textBox1.Text))
        MessageBox.Show("No Password inserted");

    if (!string.IsNullOrEmpty(textBox2.Text))
        MessageBox.Show("No username inserted");

    if ((textBox1.Text == username) && (textBox2.Text == password))
        MessageBox.Show("Login Succeed");
    else
        MessageBox.Show("Login failed");
}

当我输入Admin作为用户名和root作为密码时,它会让我登录成功,当我随机输入用户名&密码它给我登录失败,那部分工作完美无瑕。它更多的是关于“未插入”部分以及字段未填充时。

它什么都不做:') 它一直说“登录失败”任何想法如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

替换

!string.IsNullOrEmpty()

string.IsNullOrWhiteSpace()

所以完整的解决方案:

private void button1_Click(object sender, EventArgs e)
{
    string username = "Admin";
    string password = "root";

    if (string.IsNullOrWhiteSpace (textBox1.Text))
        MessageBox.Show("No Password inserted");
    else if (string.IsNullOrWhiteSpace (textBox2.Text))
        MessageBox.Show("No username inserted");
    else if ((textBox1.Text == username) && (textBox2.Text == password))
        MessageBox.Show("Login Succeed");
    else
        MessageBox.Show("Login failed");

}

答案 1 :(得分:0)

请尝试以下操作:

private void button1_Click(object sender, EventArgs e)
        {
            string username = "Admin";
            string password = "root";

            //When both are empty
            if (string.IsNullOrEmpty(textBox1.Text) && string.IsNullOrEmpty(textBox2.Text))
            {
                MessageBox.Show("Fields are not filled");
                return;
            }

            //When username is empty    
            if (string.IsNullOrEmpty(textBox1.Text))
            {
                MessageBox.Show("No username inserted");
                return;
            }

            //When password is empty
            if (string.IsNullOrEmpty(textBox2.Text))
            {
                MessageBox.Show("No password inserted");
                return;
            }

            if ((textBox1.Text == username) && (textBox2.Text == password))
                MessageBox.Show("Login Succeed");
            else
                MessageBox.Show("Login failed");

        }

答案 2 :(得分:0)

主要问题是您基本上要求的第一个IF声明中的逻辑:

IF(Not-IsNullOrEmpty(LOGIN) AND Not-IsNullOrEmpty(PASS))
    SHOW MESSAGE

这就是为什么它不起作用。

我可能会重写它,不要重复自己,让它更具可读性:

private void button1_Click(object sender, EventArgs e)
{
    string username = "Admin";
    string password = "root";
    var message = string.Empty;
    bool loginEmpty = string.IsNullOrEmpty(textBox1.Text),
         passEmpty = string.IsNullOrEmpty(textBox2.Text),
         loggedIn = (textBox1.Text == username) && (textBox2.Text == password);

    if (!loggedIn) 
    {
        if (loginEmpty && passEmpty)
            message = " - Fields are not filled";
        else if (passEmpty)
            message = " - No Password inserted";
        else if (loginEmpty)
            message = " - No username inserted";

        MessageBox.Show("Login failed" + message);
        return;
    }

    MessageBox.Show("Login succeded");
}