您的位置:首页 > 其它

限制重复登录问题

2011-08-23 08:15 232 查看
在测试的时候遇到了限制同一用户重复登录的问题。下面说说我的解决思路。

思路一:声明一个静态变量,用于存放最新一次的登录账户名,在新用户登录的时候与之进行对比,如果相同那么就说明已经登录。

分析:这个思路的局限性很大,从理论上说,这个变量只能存放最新登录的用户名,显然不能满足系统的要求。

思路二:声明一个静态的数组,存放已经登录的用户名,在新用户登陆的时候,判断这个数组内是否有相同元素。

分析:这种思路虽然比思路一改进了些,但是局限性还是很大,不能满足需求。

思路三:在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: