回 帖 发 新 帖 刷新版面

主题:如何实现相同用户不能同时登陆?

我是用PB、SQL开发一个管理系统.
现在我要实现:一个用户名登陆后,不能使用相同的用户名登陆该管理系统.也就是说象QQ一样,相同的QQ号不能同时在线.该怎么办?
我本想在数据库用户表中设一个标记列,当用户点登陆按钮后,标记为1,然后用户点退出按钮时,标记为0.但是遇到个问题,就是如果登陆的用户如果不是正常退出程序(象非法关机),那么该用户就一直在线了.

回复列表 (共5个回复)

沙发

你可以按照一定时间段扫描阿

板凳

定时扫描是一个办法,你也可以使用主界面带有用户标志位,一旦主窗口关闭,用户的状态自动转换为0,否则为一,这样也可以解决啊。

3 楼

估计不是,这似乎要用到三层开发。
在服务器端除了数据库外,还应该编一个检测客户端和连接数据库的软件。
当打开客户端软件,就发送信号到服务器,该软件接收到信号后,连接数据库。
通过该软件的编程就可以完成上述功能。

4 楼

我这是CS结构,如果是BS结构就简单了。

5 楼

这个方法你看可以吗:
    1 除了标志字段 再增加一个机器名的字段
    2 登陆时
       bz = 0 : bz = 1 ,host = 本机器名
       bz = 1 : a host = 本机名  直接进入
                b host <> 本机名      
                  查master..sysprocesses 中是否有此机器名的进程,
                  如果有,则不能登入 ,没有 ,可以登陆, host = 本机名
                  或者提示哪台机器占用
备注:  
     sqlserver中  host_name() 函数 可以取到本机器名
     select host_name() into :ls_host ........
     master..sysprocesses 中 有hostname字段
虽然不能说肯定不会发生你说的情况,但是几率比你的要少很多

我来回复

您尚未登录,请登录后再回复。点此登录或注册