以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [分享]限制用户用同一个账户只能登陆1个客户端  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=21111)

--  作者:qq121454970
--  发布时间:2012/7/1 23:06:00
--  [分享]限制用户用同一个账户只能登陆1个客户端
在用户表中添加一列,名为“最近在线”,该代码只适用自定义用户哦,可以自行修改,必须小于登陆窗口的秒数
在计划管理中增加一个计划
在计划中加入以下代码(计划管理间隔设为10秒),可自行调整
Dim s As String = Date.now()
Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "Update {Users} Set [最近在线] = \'" & s & "\'Where [Name]= \'" & _UserName & "\'"
If cmd.ExecuteNonQuery = 1 Then
End If

在用户登录窗口中的提交按钮中代码改成,有点事,不提取出来了,不好意思哦,要的话会提出来的
Dim UserName As String = e.Form.Controls("UserName").Value
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim dr1 As DataRow
cmd.C
If UserName = ""  Then
    Messagebox.show("请选择用户!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If
Cmd.CommandText = "Select * From {Users} Where [Name] = \'" & UserName & "\'"
If cmd.ExecuteScalar() = 0 Then
    Dim Result As DialogResult
    Result = MessageBox.Show("您输入的用户名或者密码错误,请重新输入!", "提示", MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If
cmd.CommandText = "Select * From {Users} Where [Name] = \'" & UserName & "\'"
dt = cmd.ExecuteReader
dr1 = dt.DataRows(0)
If e.Form.Controls("PassWord").Value = dr1("Password") Then
    If dt.DataRows.Count = 1 Then
        Dim d1 As Date = dt.DataRows(0)("最近在线")
        Dim d2 As Date = Date.now()
        Dim t As TimeSpan = d2 - d1
        If t.TotalSeconds >= 30 Then ‘ 30是秒数,就是用户在30秒没有报道的话,会被系统认为退出,计划管理是10秒执行一次,具体自己修改即可
            _UserName = UserName
            _UserGroup = dr1("Group")
            Dim s As String = e.Form.Controls("UserName").Value \'这段代码是用来保存用户名的
            FileSys.WriteAllText("c:\\UserName.txt", s, False, Encoding.Default)
            e.Form.Close
        Else
            MessageBox.Show("此用户已登录!","提示",MessageBoxButtons.OK)
        End If
    End If
Else
    Messagebox.show("您输入的用户名或者密码错误,请重新输入!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If


一直劳烦大家帮我,这个就算我对大家一小点的心意吧,如果有不对的地方,还请指点哦,小弟才疏学浅,,呵呵
[此贴子已经被作者于2012-7-1 23:10:03编辑过]

--  作者:sunbrain
--  发布时间:2012/7/1 23:35:00
--  
谢谢分享,很受用
--  作者:zjslf003
--  发布时间:2012/7/2 0:30:00
--  
图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看
--  作者:ljz
--  发布时间:2013/4/27 22:18:00
--  

收藏

 


--  作者:rjh4078
--  发布时间:2013/4/27 22:26:00
--  

感谢分享

 

 


--  作者:blackzhu
--  发布时间:2013/4/28 7:57:00
--  
貌似加个逻辑列判断下就可以了
--  作者:qq121454970
--  发布时间:2013/4/28 9:28:00
--  
以下是引用blackzhu在2013-4-28 7:57:00的发言:
貌似加个逻辑列判断下就可以了

异常退出的话,就不方便了呢


--  作者:blackzhu
--  发布时间:2013/4/28 9:39:00
--  
呵呵 这个倒是的,但是有超级管理员的呀.
--  作者:狐狸爸爸
--  发布时间:2013/4/28 11:15:00
--  

谢分享。

 

图片点击可在新窗口打开查看


--  作者:qq121454970
--  发布时间:2013/4/28 15:21:00
--  
以下是引用blackzhu在2013-4-28 9:39:00的发言:
呵呵 这个倒是的,但是有超级管理员的呀.

超级管理员管这事,还不如直接在客户端完成呢图片点击可在新窗口打开查看