---- 一般进入系统都要登录(如进入Windows NT),进行身份检验,以保证软件的合法使用和维护,便于明确责任。我们自己开发的系统也必须保证系统使用者是合法用户,登录时要进行身份验证。
---- 系统登录时一般有三次机会,超过则视为非法用户,不让使用系统。本程序是用VB5.0实现的,后台数据库是Access 97。
其主要源程序代码如下: Private Sub cmd_yes_Click() '开始检验 Picture1.Picture = LoadPicture("trffc10b.ico") times = times + 1 '解密 txt_mm.Text = invert(txt_mm.Text) '查找用户名 ordc_dlmmk.Recordset.FindFirst "username='" & txt_bh.Text & "'" If ordc_dlmmk.Recordset.NoMatch Then If times < 3 Then Picture1.Picture = LoadPicture("trffc10c.ico") MsgBox "无此用户,请重新输入!", vbExclamation + vbOKOnly,"提示信息" Picture1.Picture = LoadPicture("trffc09.ico") txt_bh.SetFocus Call txt_bh_GotFocus Exit Sub Else MsgBox "对不起,您无权使用本系统 ," + vbCrLf + vbCrLf + " 请与系统管理员联系! ", vbCritical + vbOKOnly, "提示信息" End End If End If If times < 3 Then If Not (UCase(txt_mm.Text) = UCase(Text2.Text)) Then txt_mm.Text = invert(txt_mm.Text) Picture1.Picture = LoadPicture("trffc10c.ico") MsgBox "用户密码错误,请重新输入!", vbExclamation, "提示信息" Picture1.Picture = LoadPicture("trffc09.ico") txt_mm.SetFocus Call txt_mm_GotFocus Exit Sub Else Picture1.Picture = LoadPicture("trffc10a.ico") MsgBox "欢迎您使用本系统!", vbInformation, "提示信息" Unload Me frm_welcome.Show End If ElseIf times = 3 Then If UCase(txt_mm.Text) = UCase(Text2.Text) Then Picture1.Picture = LoadPicture("trffc10a.ico") MsgBox "欢迎您使用本系统!", vbInformation, "提示信息" Unload Me frm_welcome.Show Exit Sub End If MsgBox "对不起,您无权使用本系统, " + vbCrLf + vbCrLf + " 请与系统管理员联系! ", vbCritical + vbOKOnly, "提示信息" End End If End Sub
---- 由于一般系统用户有多个,所以必须设置多用户。通常用户名和对应密码以数据库的形式保存。但数据库极易暴露,可直接通过打开数据库而获取用户名和密码,安全性不好,所以应进行加密工作--保存在数据库中的密码与登录时输入的密码不一样,保存时进行加密,登录时进行解密。这样,即使看到了数据库内容,如果不知道解密过程也无法进入系统。
---- 一个比较简单的加密过程如下:
Public Function invert(passw As String) Dim i As Integer Dim Temp As String Temp = "" For i = Len(passw) To 1 Step -1 Temp = Temp + Mid(passw, i, 1) Next i invert = Temp End Function
---- 至此一个简单的系统登录过程就实现了。 |