验证登录字段

时间:2012-01-14 09:23:15

标签: vb.net

好日子,

感谢您的帮助,我的VB.net技能正在提高。我有另一个小请求 - 需要帮助解决一些我在调试过程中遇到问题的代码。

我的目的是让代码 - 在button.click事件上 - 检查用户名和密码字段并根据哪个错误返回错误。或者如果两者都错误,则返回不同的错误消息。我已将用户名设置为部分,将密码设置为部分(仍在学习如何使用外部身份验证)。

所以,这是代码 - 我怎样才能使这个工作?

If Not TextBoxUsername.Text = "parts" Then
        Label3.ForeColor = Color.Red
        Label3.Text = "Invalid Username..."
        TextBoxUsername.SelectAll()
        TextBoxUsername.Focus()
    Else
        If Not TextBoxPassword.Text = "parts" Then
            Label3.ForeColor = Color.Red
            Label3.Text = "Invalid Password..."
            TextBoxPassword.SelectAll()
            TextBoxPassword.Focus()

            'NOTES:
            'This section of the code is being skipped, and I can't figure out why.  
        ElseIf TextBoxUsername.Text <= "parts" And TextBoxPassword.Text <= "parts" Then
            Label3.ForeColor = Color.Red
            Label3.Text = "Invalid USERNAME and PASSWORD..."
            TextBoxUsername.SelectAll()
            TextBoxUsername.Focus()
        Else
            Label3.ForeColor = Color.Green
            Label3.Text = "Login successful..."
            FormMain.Show()
            Me.Close()
        End If

    End If

我正在阅读使用SELECT CASE语句来查看我是否可以使用它 - 但还没有弄清楚如何使其工作。感谢。

// Kismet中

2 个答案:

答案 0 :(得分:1)

SELECT CASE在这里并不是真正合适的解决方案。试试这个:

If TextBoxUsername.Text <> "parts" And TextBoxPassword.Text <> "parts" Then
    Label3.ForeColor = Color.Red
    Label3.Text = "Invalid USERNAME and PASSWORD..."
    TextBoxUsername.SelectAll()
    TextBoxUsername.Focus()
Else If TextBoxUsername.Text <> "parts" Then
    Label3.ForeColor = Color.Red
    Label3.Text = "Invalid Username..."
    TextBoxUsername.SelectAll()
    TextBoxUsername.Focus()
Else If TextBoxPassword.Text <> "parts" Then
    Label3.ForeColor = Color.Red
    Label3.Text = "Invalid Password..."
    TextBoxPassword.SelectAll()
    TextBoxPassword.Focus()
Else
    Label3.ForeColor = Color.Green
    Label3.Text = "Login successful..."
    FormMain.Show()
    Me.Close()
End If

一些风格笔记:

  1. Label3需要一个合适的名字。如果您要在代码中引用它,请不要使用默认值。它现在很好,但是当你的表格变得更复杂时,你将很难记住label1,label6和label23之间的区别。不要试图把这一切都记在脑后。而是使用控件的描述性名称。

  2. 请注意使用<>,表示“不等于”。这有时比Not运算符略好一些,因为您可以从左到右阅读,而不必双回并记住该子句之前有Not。这实际上是个人偏好而不是技术正确性。

答案 1 :(得分:1)

我绝对同意布莱恩在这里:)

然而,一个小点。从“安全”角度来看,永远不要让用户知道用户名是否不正确或密码是否错误。

这是我的建议

If TextBoxUsername.Text <> "parts" or TextBoxPassword.Text <> "parts" Then
    Label3.ForeColor = Color.Red
    Label3.Text = "Invalid USERNAME OR Invalid PASSWORD. Please Try Again"
Else
    Label3.ForeColor = Color.Green
    Label3.Text = "Login successful..."
    FormMain.Show()
    Me.Close()
End If
相关问题