以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  局域网环境一个用户多处登录问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=22337)

--  作者:lxh_wx
--  发布时间:2012/8/9 14:18:00
--  局域网环境一个用户多处登录问题
局域网环境下,使用外部表Access2007数据库,如何实现让一个用户登录后,除非已经退出,否则不容许该用户在其它地方登录系统?
--  作者:狐狸爸爸
--  发布时间:2012/8/9 14:28:00
--  
这个需要你自己写代码实现用户管理和登陆,进去的时候在后台数据库标记这个用户已经登陆,退出的时候清除这个标记,登陆的时候,只列出那些还未登陆的用户。
--  作者:lxh_wx
--  发布时间:2012/8/9 14:33:00
--  

非常感谢!如果用标准的登陆界面是否可以列出那些还未登录的用户?


--  作者:lxh_wx
--  发布时间:2012/8/9 15:48:00
--  
谢谢muhua的帮助。
--  作者:blackzhu
--  发布时间:2012/8/9 16:44:00
--  
做个逻辑列判断一下  如果在一段时间不能同时的话 写两个时间列判断.
--  作者:shenyl0211
--  发布时间:2012/8/9 21:20:00
--  

建一个登录管理表,包含登录用户、电脑名称、登录地址、登录时间、机器码(如果需要注册才能登录)、异机登录,每次登录都先从表中查找是否有同名登录用户,若无则添加记录,若有(属于不正常退出)且属本机登录,则不添加记录,只修改登录时间,若属异机登录则在异机登录中填写“是”。每次退出、切换用户都删除登录记录。

\' 判断同名用户是否已经登录,并作相应处理
Dim HostName As String
HostName=System.Net.Dns.GetHostName \'获得本机的机器名
Dim IPAdress As System.Net.IPAddress
IPAdress=System.Net.Dns.GetHostByName(HostName).AddressList.GetValue(0) \'获得本机的IP
Dim dt2 As Date
cmd.CommandText = "Select GetDate()"
dt2 = cmd.ExecuteScalar()\'服务器的日期和时间
With DataTables("登录管理")
    dr0 = .Find("登录用户= \'" & _username & "\'") \'_Username为自定义登录时的用户名
    \' 已登录的处理
    If dr0 IsNot Nothing Then
        Dim name As String=dr0("电脑名称")
        If name<>hostname Then \'异机登录
            Dim IP As String=dr0("登录地址")
            Dim rq As Date=dr0("登录时间")
            MessageBox.Show("该用户已异机登录, 请确认或联系管理员或开发者!" & vbcrlf & "其电脑名称是 " & name & vbcrlf & "其登录地址是 " & IP & vbcrlf & "其登录时间是 " & rq,"警告",MessageBoxButtons.ok,MessageBoxIcon.warning)
            e.Form.Close
            dr0("异机登录")="是"
            dr0 = .AddNew()
            dr0("登录用户")=_username
            dr0("电脑名称")=HostName
            dr0("登录地址")=IPAdress.ToString
            dr0("登录时间")=dt2
            dr0("机器码")=computerId
            dr0("异机登录")="是"
            .save()
             syscmd.project.Exit(True) 
        Else
            dr0("登录地址")=IPAdress.ToString
            dr0("登录时间")=dt2
            .save()
        End If
    Else
        \'未登录的处理
        dr0 = .AddNew()
        dr0("登录用户")=_username
        dr0("电脑名称")=HostName
        dr0("登录地址")=IPAdress.ToString
        dr0("登录时间")=dt2
        dr0("机器码")=computerId
        .save()
    End If
End With

 

Dim i As Integer
\' 在退出系统的菜单按钮代码前和关闭项目事件前的代码中用到下列代码,以保证用户登录记录删除成功
\'MainTable=Tables("登录管理")
\'With CurrentTable
\'    i = .Findrow("登录用户= \'" & _username & "\'",0,False)
\'    If i>-1 andalso .rows(i)("异机登录") ="" Then
\'        .Rows(i).Delete()
\'        DataTables("登录管理").save() \'在登录窗口的"退出"按钮中也要增加该保存命令
\'    End If
\'End With



--  作者:lxh_wx
--  发布时间:2012/8/20 11:39:00
--  
你好!切换用户时如何将原用户登录的信息删除?
--  作者:lxh_wx
--  发布时间:2012/8/20 21:27:00
--  
我用一个用户名登录后没有退出项目,直接切换用户,这相当于切换前的用户退出了,但切换前的用户登录的信息没删除,请教如何能将切换前的用户登录的信息删除?
--  作者:shenyl0211
--  发布时间:2012/8/21 9:48:00
--  

\'用户切换按钮代码:

Dim i As Integer
MainTable=Tables("登录管理")
With CurrentTable
    i = .Findrow("登录用户= \'" & _username & "\'",0,False)
    If i>-1 And .rows(i)("异机登录") ="" Then 
        .Rows(i).Delete()
    End If
End With
_username=""
Syscmd.Project.Save()
Forms("用户登录").Open()