在测试的时候遇到了限制同一用户重复登录的问题。下面说说我的解决思路。
思路一:声明一个静态变量,用于存放最新一次的登录账户名,在新用户登录的时候与之进行对比,如果相同那么就说明已经登录。
分析:这个思路的局限性很大,从理论上说,这个变量只能存放最新登录的用户名,显然不能满足系统的要求。
思路二:声明一个静态的数组,存放已经登录的用户名,在新用户登陆的时候,判断这个数组内是否有相同元素。
分析:这种思路虽然比思路一改进了些,但是局限性还是很大,不能满足需求。
思路三:在online_info表中记录已登录的用户名。
分析:这个方法虽然可行,但是,如果登陆者的身份是系统管理员,如果也加到目前登录人数,这样就不能这却反映上机消费的学生人数。所以还应改进一些。
思路四:在user_info表中记录已登录用户的登录状态。添加一个flag字段,如果成功登录,那么给这个字段赋值为1,用户退出时字段赋值为0。
分析:这么一来,基本上满足了系统的需求,下面是部分与之相关的代码。但是这里还应该提到一个健壮处理:如果非正常退出登录,比如电脑突然死机,突然停电等等。应该增加这些事件的状态处理,以便保证user_info表中flag字段的正确赋值。
'检测在用户信息表中是否已经登录
Dim txtSQLA As String
Dim MsgTextA As String
Dim RstA As ADODB.Recordset
txtSQLA = "select * from user_info where userid='" & Trim(txtUserName.Text) & "'"
Set RstA = ExecuteSQL(txtSQLA, MsgTextA)
If RstA!FLag = 1 Then
MsgBox "此用户已经登录,不能重复登录", vbOKOnly + vbExclamation, "提示"
txtUserName.Text = ""
txtPassWord.Text = ""
txtUserName.SetFocus
RstA.Close
Exit Sub
Else
RstA!FLag = 1
RstA.Update
RstA.Close
End If