简单说,就是当一个用户登陆后,避免利用该用户名重复登陆.实在是没什么头绪.本来想用session存一个变量,当会话结束时修改数据库中的值,每次登陆时除验证用户名,密码还判断一下该用户在数据库中的值,如果在线就禁止登陆.可是我会话用的是默认时间20分钟,每次关闭页面后要等20分钟才能再登陆.我又不想改变默认的时间.不知道各位高人又什么好办法?谢谢了!!!!

解决方案 »

  1.   

    个人觉得:
    应该把该用户名和该用户SESSION ID一起保存到数据库中,
    等会话结束(也就是该用户断开)再删除数据库记录,
    当然你判断是否有重复登陆只要判断数据库中有没有
    该用户记录就可以了。
      

  2.   

    可以在数据库里入手
    在你数据库的用户信息的表里 加一个字段flag记录改用户是否已登陆
    在用户登陆时 你都要访问用户的合法性 这是可以将用户登陆记录的flag进行修改
      

  3.   

    如果有人想利用重复的帐号登陆
    那么在登陆的时对这个是否登陆的记录字段进行判断就可以了
    在用用户退出登陆时 再次修改数据库的那个flag不过这样有个缺陷:
    如果用户是非法退出的时候,那个登陆记录的标记
    就没有被修改回来,下次那个帐号的用户就没办法登陆。
      

  4.   

    可以使用Cache实现,退出时记得清除Cache里的记录,否则下次也不进去了
    参看
    http://dotnet.aspx.cc/ShowDetail.aspx?id=CF5FFABC-CFE1-4368-3C13-9B4FCD7C7168
      

  5.   

    你们说了这么多,我也提点意见:
    用户关闭浏览器服务器是可以捕捉到的,比如:在客户端body里onunload事件里dopostback服务器端的某个按钮事件,在这个按钮时间里 修改需要修改的记录就可以了,我这样已经实现了。
    我的方法是:
    在用户登陆时把用户名加入一个arraylist里,这个arraylist存入application变量里。当用户关闭浏览器时从 arraylist里删除这个用户,删除时是根据session["user"]的值删除的,而当session超时时,再也取不到session["user"]的值,也就无法从用户列表arraylist里删除这个用户了,你们说在session超时时可以修改数据库,这是怎么确定删除哪个用户或修改某个用户的flag值???
      

  6.   

    可以在用户登录的时候记录用户,然后再记录用户活动的时间,if(登录时间 > 最后活动时间)
      用户已经登录;
    else
      可以登录;
      

  7.   

    asp里边 我可以用定时刷新一个窗体 不知道net里边是不是也可以用。
      

  8.   

    在线就禁止登录不好吧,应该像msn,这边一登,那边就下线。
    可以去数据库里查一下----------------
    『  http://www.coderpub.com  』
    ----------------
    java,j2me,delphi,asp.net,C#
      

  9.   

    用application  可以解决
      

  10.   

    当一个用此用户名的 用户登陆时,修改其FLAG为1,下次如果有同样的人登陆时当此FLAG为1时,拒绝登陆
      

  11.   

    哎——————想好了再说,说好点。
    TOaiqinbird(爱琴鸟):
    你说会话结束时删除数据库记录,但是此时你得不到session值,怎么确定删除哪条记录????
    问题考虑充分再回答,谢谢。
      

  12.   

    TO:junhao_666() 
    你说当用户退出时更改数据库中的flag标志,可是我怎么知道用户退出呢?用户点了浏览器右上角的关闭或直接关机了,我怎么知道这个事件呢?请指教!
    注销用户的方法也困饶了我好长时间了!请高手们指教,最好有例子而且详细些!谢谢!
      

  13.   

    本人比较赞成用Cache来解决 比较方便速度也比较快
      

  14.   


    笨办法:
    登录后每分钟往数据库里更新一下时间记录,再次登录检查该用户的时间,如果时间差小于设定值,则不允许登录。===========基本行不通。假设间隔时间是 一分钟。Session有效时间是 2分钟。我登陆后,记录一个时间。我开始浏览一个网页,浏览两分钟(不会传信息),这是另一个人用相同的帐号登录。由于时间已经超过了一分钟,所以它可以登录。他登陆后,我再访问网页,我的Session并没有超时,所以我仍然可以访问(不用重新登录)。这时就有两个人使用同一个帐号登录了。
      

  15.   

    是用页面中的定时刷新程序,即使在一个网页不动,只要不超过session,就每隔一分钟往数据库里更新时间记录。
      

  16.   

    http://zhangweiguo3984.cnblogs.com/archive/2006/01/10/314248.html  实现单点登陆