2012-01-14 35 views
1

好日子SO,验证登录字段

感谢您的所有帮助,我的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语句,看看我是否可以使用,而不是读了 - 但还没有想出如何使这项工作呢。谢谢。

//天命

回答

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 
+0

感谢您的回答。我测试了它,它工作正常。我明白你从安全方面来的哪些方面,但是,由于我的用户对任何计算机都采取了“哑巴”的方式,因此我决定尽可能地对应用程序进行“虚拟验证”。 – 2012-01-16 10:21:09

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。尽管如此,这确实是个人偏好问题,而不是技术上的正确性。

+0

@布赖恩威利斯 - 感谢您的答案和文体建议,我已经考虑到了这些周密并作相应修改我的代码。我确实测试了你的建议,并且工作完美。 – 2012-01-16 10:19:20