我有一个程序被编写为用户名/密码创建者,并且我正在尝试制作一个部分,用于确定是否已输入用户名,并通知用户。它似乎没有工作。我的代码如下:
z = File.OpenText(a)
Do Until z.EndOfStream() = True
Dim password As String
password = CStr(z.ReadLine() & vbCrLf)
If password = TextBox1.Text Then
errors = errors + 1
msgPrompt = msgPrompt & "The username you entered, " & TextBox1.Text & " is already taken."
End If
If errors > 1 Then
TextBox5.Text = errors & " errors occured."
ElseIf errors = 0 Then
TextBox5.Text = "No errors!"
Else
TextBox5.Text = errors & " error occured."
End If
If errors >= 1 Then
Button2.Enabled = True
Else
Button2.Enabled = False
End If
Loop
密码在.txt文件中逐行存储,所以基本上我希望程序逐个遍历每个条目并查看它是否与用户输入的内容相匹配。如果我做错了什么,请通知我,我很乐意让这个脚本工作。
答案 0 :(得分:1)
假设您的问题的标题是正确的,您的代码中的变量名称不正确 - 这不是非常重要,但它会混淆任何在6个月内回来维护软件的人。此外,当您的代码正确运行时,由于所有用户名都是唯一的,因此无需返回错误数。
它比原始代码长,但TextExists
函数可用于打开您选择的文件,例如密码文件和用户名文件 - 尽管在这种情况下您的用户名和密码可以更好地存储在一个文件中。
'Opens the file and if it contains the input text, returns True. Otherwise returns false
Private Function TextExists(filename As String, inputText As String) As Boolean
Dim z As StreamReader = File.OpenText(filename)
Dim fileText As String
Dim msgPrompt As String = ""
Do Until z.EndOfStream() = True
fileText = CStr(z.ReadLine())
If inputText = fileText Then
Return True
End If
Loop
Return False
End Function
Private Sub CheckUserName()
If TextExists(a, TextBox1.Text) Then
MessageBox.Show("Username Already Exists")
Button2.Enabled = False
Else
Button2.Enabled = True
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
CheckUserName()
End Sub
对于严重的密码存储,用户名和密码在保存之前应加密,并在加载时解密。以纯文本形式保存这样的敏感信息总是一个非常糟糕的主意。