2016-11-12 44 views
0
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    Dim FILE_NAME As String = Cashierpath 
    System.IO.File.Exists(FILE_NAME) ' current 
    Dim objReader As StreamReader 
    Dim user As String = TextBox1.Text 
    Dim password As String = TextBox2.Text 
    Dim check As String 


    'Global Variable 
    'Dim DirPath7 As String = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Scrap Data\Cashier Info\Cashiers\") 

    For Each filename As String In IO.Directory.EnumerateFiles(DirPath7, "*.txt") 
     Dim fName As String = IO.Path.GetFileName(filename) 
     If user = fName & ".txt" Then 
      objReader = New StreamReader(fName) 
      check = objReader.ReadToEnd() 
      If password = check Then 
       MessageBox.Show("Welcome " & user & "!") 
       Close() 
       My.Forms.Home.Show() 
      Else 
       MessageBox.Show("Username or Password is incorrect") 

      End If 
     End If 
    Next 
End Sub 

當用戶進入他們的「用戶名」和「密碼」到文本框的,並點擊該按鈕,我想這個按鈕獲取用戶名和密碼,以檢查是否存在與名的文本文件輸入用戶名,如果使用該用戶名的文件必須讀取它並檢查密碼是否與文件內的字符串匹配。如果它不匹配它,它必須顯示一個消息框,指出「用戶名或密碼不正確」,但是當我點擊這個按鈕時沒有任何反應。沒有錯誤信息出現。 有人可以看看我的代碼,並告訴我什麼即時做錯了?不從文本文件

+0

什麼是目前沒有工作? – Richard

+0

那我不知道。如果我是新的,我不會問這個問題。我會做的是編譯我的項目並安裝它然後運行它。也許這會告訴我我的問題是什麼。 –

+2

千萬不要將密碼存儲在文本文件中。 –

回答

1

你在那裏有一個可怕的方式來處理用戶憑證!

閱讀以瞭解更多信息:Salted Password Hashing - Doing it Right

無論如何,你的方式過度開發它。

別處在您的應用程序(正確使用聯合收割機):

' Global Variable 
Friend Shared DirPath7 As String = IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.MyDocuments, "Scrap Data", "Cashier Info", "Cashiers") 

按鈕處理程序:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    Dim User As String = TextBox1.Text.Trim 
    Dim Pass As String = TextBox2.Text.Trim 

    ' Assemble the full expected file path, even if it might be malformed. 
    ' The first case check protects against malformed path. 
    Dim FilePath As String = IO.Path.Combine(DirPath7, String.Format("{0}.txt", User)) 

    Select Case True 
     Case User.Length = 0 
      MsgBox("Username is empty", vbExclamation, "Error") 
     Case Pass.Length = 0 
      MsgBox("Password is empty", vbExclamation, "Error") 
     Case Not IO.File.Exists(FilePath) 
      MsgBox("No file for User", vbExclamation, "Error") 
     Case Not IO.File.ReadAllText(FilePath) = Pass 
      MsgBox("Wrong Password", vbExclamation, "Error") 
     Case Else 
      MsgBox(String.Format("Welcome {0}!", User), vbOKOnly, "Success") 
      My.Forms.Home.Show() 
    End Select 
End Sub 
+0

是的,只是把我擊倒。我仍然是vb.net的新手。我還沒有完全決定如何處理用戶名和密碼。但是,感謝您的幫助,它實際上會幫助我在程序中發出特定的錯誤。 –

+0

閱讀此:https://crackstation.net/hashing-security.htm – MrGadget

0
Dim objReader As StreamReader 
    Dim user As String = TextBox1.Text 
    Dim password As String = TextBox2.Text 
    Dim check As String 

    Dim fname = Path.Combine(DirPath7, String.Format("{0}.txt", user)) 
    If File.Exists(fname) Then 
     Using objreader As New StreamReader(fname) 
      'objReader = StreamReader(fname) 
      check = objreader.ReadToEnd() 
      password = check 
      MessageBox.Show("Welcome " & user & "!") 
      Close() 
      My.Forms.Home.Show() 
     End Using 
    Else : MessageBox.Show("file not found, no user exists") 
    End If 

去除多餘的「.TXT」

新增「不要使用」。 。 。 「End Using」

+0

做'使用objreader作爲新的StreamReader(fname)....結束使用',那麼你不需要手動調用處置,也可以擺脫'objreader.close'語句,(這btw,'處置'暗中呼叫) – pinkfloydx33

+0

這實際上有助於更多,大聲笑。謝謝 –