声明:以下内容只对在登录时一个用户名不能同时多次登录的同学适用!
说是BUG,其实这也不是一个BUG,只是想出一个办法,解决一个大家好多人都没有解决的问题!下面就给大家详细讲讲到底是什么样的问题,什么样的解决办法:
在机房收费系统中的用户登录功能,我们能够让一个用户在不同的电脑上同时登录吗?我相信大家跟我的想法都差不多,一个用户当然不能在不同的电脑上同时登录!那么问题就来了,如果用户已经登录系统,突然断电或者死机重启,那么用户还能登录我们的系统吗?肯定能啊!不就是断电吗?为什么不能继续登录了呢?
![](https://img-blog.csdn.net/20141021154817984?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcnk1MTM3MDU2MTg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
下面我们先看一下我们的数据库,当用户名为"1"的用户登录系统的时候,会往数据库中插入一条正在值班的工作记录,如图所示。
![](https://img-blog.csdn.net/20141021155223712?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcnk1MTM3MDU2MTg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
同时,正是因为有了这条记录,我们在用户登录之前就应该判断"1"这个用户当前是否正在值班,数据库中有一条正在值班的记录,那么就应该提示"该用户正在值班!",这样就限制了用户名为"1"的用户在不同的电脑上同时登录。
![](https://img-blog.csdn.net/20141021154859531?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcnk1MTM3MDU2MTg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
正常的情况向,当一个用户登录系统,系统会往数据库中插入一条正在值班的工作记录,当用户正常退出系统的的时候,系统会将该用户正在值班的工作记录,更改状态。如图:
![](https://img-blog.csdn.net/20141021155329185?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcnk1MTM3MDU2MTg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
如果用户已经登录系统,突然断电或者死机重启!用户不能正常的退出系统,系统也就不能将正在值班的记录更改为下班的状态!这个时候,我们再登录用户"1",系统就会提示我们"该用户正在值班!",我们就再也登录不上去了,这个时候怎么办呢?只能去更改后台数据库的数据,但是这是一个非常麻烦也是一个非常不适用的做法!
下面看看我的登录,当数据库中已经存在一条用户"1"正在值班的记录的时候,系统会先提示我们"该用户正在值班!",接着跳转到另一个新的登录页面,如图。我为系统设置了一个超级密码!当输入超级密码正确的时候,我们就能再次登录系统!
![](https://img-blog.csdn.net/20141021155348389?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcnk1MTM3MDU2MTg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
超级密码是自己设置的,可以写在代码里,也可以写在配置文件里。这种方法让我们解决了电脑断电,死机重启用户不能再次登录的问题!但是,如果我们知道了超级密码,我们也就可以实现同一个用户在不同的电脑上同时登录!所以,有利也有弊!但是我们可以让超级密码变得很机密,一般人不知道,只有超级管理员才知道!这样的话,勉强也能说得过去...
说是BUG,其实这也不是一个BUG,只是想出一个办法,解决一个大家好多人都没有解决的问题!下面就给大家详细讲讲到底是什么样的问题,什么样的解决办法:
在机房收费系统中的用户登录功能,我们能够让一个用户在不同的电脑上同时登录吗?我相信大家跟我的想法都差不多,一个用户当然不能在不同的电脑上同时登录!那么问题就来了,如果用户已经登录系统,突然断电或者死机重启,那么用户还能登录我们的系统吗?肯定能啊!不就是断电吗?为什么不能继续登录了呢?
下面我们先看一下我们的数据库,当用户名为"1"的用户登录系统的时候,会往数据库中插入一条正在值班的工作记录,如图所示。
同时,正是因为有了这条记录,我们在用户登录之前就应该判断"1"这个用户当前是否正在值班,数据库中有一条正在值班的记录,那么就应该提示"该用户正在值班!",这样就限制了用户名为"1"的用户在不同的电脑上同时登录。
正常的情况向,当一个用户登录系统,系统会往数据库中插入一条正在值班的工作记录,当用户正常退出系统的的时候,系统会将该用户正在值班的工作记录,更改状态。如图:
如果用户已经登录系统,突然断电或者死机重启!用户不能正常的退出系统,系统也就不能将正在值班的记录更改为下班的状态!这个时候,我们再登录用户"1",系统就会提示我们"该用户正在值班!",我们就再也登录不上去了,这个时候怎么办呢?只能去更改后台数据库的数据,但是这是一个非常麻烦也是一个非常不适用的做法!
下面看看我的登录,当数据库中已经存在一条用户"1"正在值班的记录的时候,系统会先提示我们"该用户正在值班!",接着跳转到另一个新的登录页面,如图。我为系统设置了一个超级密码!当输入超级密码正确的时候,我们就能再次登录系统!
超级密码是自己设置的,可以写在代码里,也可以写在配置文件里。这种方法让我们解决了电脑断电,死机重启用户不能再次登录的问题!但是,如果我们知道了超级密码,我们也就可以实现同一个用户在不同的电脑上同时登录!所以,有利也有弊!但是我们可以让超级密码变得很机密,一般人不知道,只有超级管理员才知道!这样的话,勉强也能说得过去...
经过上面简单的讲解,相信大家都明白了我的超级密码的用处吧!对于这一个问题,如果大家还有不一样的理解,可以私下跟我讨论......