精易论坛

标题: 关于如何实现一个用户帐号只能同时打开一个软件的思路 [打印本页]

作者: YJF    时间: 2013-8-5 22:07
标题: 关于如何实现一个用户帐号只能同时打开一个软件的思路
我自己有一个VPS的服务器。并有MYSQL数据库
现在我已经实现了用户帐号密码连接上了服务器的数据库验证的功能。。

我现在想实现,如果这个用户登录了软件,服务器会知道这个人登录了。并且一个用户名只能同时登录1个软件。当用户关掉软件的时候。才可以再次登录。

现在有一个问题我搞不懂,如果用户是正常关闭软件,我就知道可以用窗口销毁事件来通知服务器这个用户已经退出。但是,用户如果是非法关闭软件,比如从任务管理器强制退出,或者软件突然崩溃退出等原因,软件是响应不了销毁事件的。


请问:我应该怎么实现用户帐号只能同时登录一个软件。并且可以知道用户已退出呢。求思路。


作者: 心跳的回忆    时间: 2013-8-5 22:07
客户登录后 修改当前用户的MYSQL 字段, 当前在线字段,1在线 0退出. 也还可以增加一个当前登录IP, 功能你不懂的.

服务器 每隔多少秒与客户 进行 心跳操作, 心跳几次不通 就设置数据字段=0

楼上说的 判断  连接是否断开 差不多.
作者: 天中小和尚    时间: 2013-8-5 22:10
如果客户端软件关闭以后   是不是跟服务器就断开了连接  
作者: YJF    时间: 2013-8-5 22:17
wf54321 发表于 2013-8-5 22:10
如果客户端软件关闭以后   是不是跟服务器就断开了连接

服务器怎么知道客户端关闭呢?
作者: YJF    时间: 2013-8-5 22:32
心跳的回忆 发表于 2013-8-5 22:28
客户登录后 修改当前用户的MYSQL 字段, 当前在线字段,1在线 0退出. 也还可以增加一个当前登录IP, 功能你不 ...

你这个方法我也想了,但是我考虑到,如果客户端的软件是非法退出的,就没办法在退出时候向服务器发送“0退出”这个字段了。然后服务器的数据库里还是1.  这样的话,这用户名就卡在那里了。永远都登录不进去。


服务器上只是一个数据库而已,没有服务器版的软件。按你这个方法,是不是还要写一个服务器版的软件,24小时挂在服务器上呢?这样才能实现互发心跳?
作者: 心跳的回忆    时间: 2013-8-5 22:35
YJF 发表于 2013-8-5 22:32
你这个方法我也想了,但是我考虑到,如果客户端的软件是非法退出的,就没办法在退出时候向服务器发送“0 ...

那你是 怎么登录数据库的呢? 难道客户端 用MYSQL 低权限账户登录 后,直接查询数据库的? 还是通过WEB POST/GET 方式登录?

如果WEB 可以给客户设置COOKIE,

如果直接登录MYSQL 查询的,那就没办法了.
作者: YJF    时间: 2013-8-5 22:40
心跳的回忆 发表于 2013-8-5 22:35
那你是 怎么登录数据库的呢? 难道客户端 用MYSQL 低权限账户登录 后,直接查询数据库的? 还是通过WEB POST ...

为了不被爆库,直接用易语言里的Mysql连接命令操作的.
作者: 心跳的回忆    时间: 2013-8-5 22:42
YJF 发表于 2013-8-5 22:40
为了不被爆库,直接用易语言里的Mysql连接命令操作的.

你还真够放心的,那样一样弄你.

还是写个软件 转发查询数据库吧,谁会把 MYSQL 账户写外面去
而且你见过有多少人是允许把 SQL 之类的数据库允许 外链的? 都不安全的.
作者: YJF    时间: 2013-8-5 22:45
心跳的回忆 发表于 2013-8-5 22:42
你还真够放心的,那样一样弄你.

还是写个软件 转发查询数据库吧,谁会把 MYSQL 账户写外面去

没明白你的意思。什么是转发查询数据库。
我现在是直接用启用窗口创建时候就连接上SQL数据库了。


作者: 心跳的回忆    时间: 2013-8-5 22:48
就是你VPS 上面 专门有个"登录网关"程序(EXE程序,专门用来接受客户连接,并查询数据库使用,也可以用来做其他的),甚至还可以写其他"网关"一起,(其实用不着那么复杂) ,写一个登录网关就够了.
作者: YJF    时间: 2013-8-5 22:52
心跳的回忆 发表于 2013-8-5 22:48
就是你VPS 上面 专门有个"登录网关"程序(EXE程序,专门用来接受客户连接,并查询数据库使用,也可以用来做其他 ...

哦。你的意思是说,不要将数据库帐号写到客户端软件里是吗?
写到软件里的编译出来的后,这样会被别人查出来的吗?
作者: YJF    时间: 2013-8-5 23:02
心跳的回忆 发表于 2013-8-5 22:48
就是你VPS 上面 专门有个"登录网关"程序(EXE程序,专门用来接受客户连接,并查询数据库使用,也可以用来做其他 ...

密码密码也会有危险吗?

我就担心VPS上24小时运行一个exe软件,怕会占资源。

那如果按你的方法。我只要在客户端用客户组件将这些信息发给服务器端就行了。
顺便也可以实现定时发送心跳包了。
作者: 执着    时间: 2013-8-5 23:04
建议采用WEB来操作数据库 那样好管理!最近做过一个项目 跟这个差不多 有兴趣可以联系下!80578006
作者: BYCYF    时间: 2013-8-6 00:49
php+mysql
作者: 睿思Online    时间: 2013-8-6 08:40
可以做在线验证,多久发一次包告诉服务器,多久没发包就表示离线

作者: 飞翔的笨鸟    时间: 2013-8-6 19:45
YJF 发表于 2013-8-5 22:45
没明白你的意思。什么是转发查询数据库。
我现在是直接用启用窗口创建时候就连接上SQL数据库了。

是不是可以定期心跳,如果一定时间没有心跳就判断为超时!
作者: 188800744    时间: 2013-9-10 00:18
当用户登录时查数据库该用户是否在线,不在线就可以登录,在线就出提示,这个我好像记得论坛有例子的,我以前看到过。只要一断网,就表示用户不在线,不管是正常关闭还是非法关闭都能管用。
作者: Azer    时间: 2013-9-12 13:59
可以用你的服务器判断该用户是否在线来解决,在线的话就不能在登录了。
作者: 月光族    时间: 2013-9-12 16:56
难度非常大




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4