以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [分享]限制用户用同一个账户只能登陆1个客户端 (http://foxtable.net/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的发言:
呵呵 这个倒是的,但是有超级管理员的呀. 超级管理员管这事,还不如直接在客户端完成呢 |