我正在尝试建立登录/注册系统。
这是注册用户窗体。
Private Sub regReg_Click()
Dim TextFile As Integer
Dim FilePath As String
If regAParole.Text = "aparole" Then
FilePath = ThisWorkbook.Path & "\accounts.txt"
TextFile = FreeFile
Open FilePath For Append As #1
Print #TextFile, regID; regAmats; regParole
Close TextFile
MsgBox ("Registracija veiksmiga.")
Unload Registracija
Else
MsgBox ("Nepareiza administratora parole.")
End If
End Sub
" aparole"事物基本上只是在字段中输入的关键字,因此只有管理员才能创建新帐户。
accounts.txt内容如下:
1DirectorPassword(ID + jobposition +密码)
这是身份验证:
Private Sub logAuth_Click()
Dim TextFile As Integer
Dim FilePath As String
Dim FileContent As String
Dim find As String
Dim result As Integer
find = logID & logAmats & logParole
FilePath = ThisWorkbook.Path & "\accounts.txt"
TextFile = FreeFile
Open FilePath For Input As TextFile
FileContent = Input(LOF(TextFile), TextFile)
result = InStr(FileContent, find)
If result >= 1 Then
MsgBox ("Autorizacija veiksmiga!") ' Success
Unload Autorizacija
End If
基本上在登录时我在accounts.txt中搜索我在注册时使用的字符串组合(ID + jobposition +密码)。所以一般来说这种方法有效,但是:
如果我输入完全匹配的所有内容=效果很好
如果我输入密码的一半,就像= 1DirectorPass的格式一样,它仍然可以工作,那么基本上我怎么能告诉只搜索整个字符串而不是它的一部分呢?
我认为问题出在InStr ......
答案 0 :(得分:1)
您可以在文件内容中测试换行标记,如下所示:
result = InStr(vbCrLf & FileContent, vbCrLf & find & vbCrLf)
这只会匹配完整的行。在文件内容之前添加了额外的换行符,因此也可以匹配第一行。在文件内容的末尾,您已经有vbCrLf
个字符,因为Print
应该添加该字符。