2012-01-14 36 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