有个问题  请问一下大家
  在做一个网站 客户要求用户不能重复登陆  
  如果用户在线  则登陆不进去
  我试过数据库登陆表里加个状态  登陆前先判断状态
  但是如果用户非正常退出,比如停电。
  那么那个状态就不会被修改回来,用户将无法再继续登陆!
   
  那什么样的设计才能实现这个功能呢?
  能够写出详细代码的更好
  不甚感激

解决方案 »

  1.   

    sql作业 刷新数据库 更改状态 ,客户端总是刷新服务器 表明自己在线啊
      

  2.   

     那么那个状态就不会被修改回来,用户将无法再继续登陆! 
    ----------------------
    这样的功能在C/S中实现比较简单,如果B/S可以实现也可以.
    在用户登录状态中,每5分钟(自定义向数据库发送在线状态,刷新在线时间),数据有个触发器
    每5分钟更新一次状态,把上次响应时间超过5分钟的用户的状态更新为离线即可.
    这样子,下次就可以登录了.
      

  3.   

    session超时的时候,就自动更改数据库里的标示字段
      

  4.   


    要考虑停电的话只能这样了
    不然我是没有办法了session超时的时候,就自动更改数据库里的标示字段
    讲讲的吧
    写个遍历的例子来看看啊
    别光说不练啊
      

  5.   


    [color=#800080]是呀!麻烦兄弟举个例子来看看
      我们可不怎么明白呢
    color]
      

  6.   

    大致的一个思路:1、如果页面是使用框架(frame)的话,可以放一个隐藏的框架,指向一个aspx页面,这个页面定时5分钟刷新一次,目的是告诉服务器端客户端连接还正常,也就表示这个用户是在线的2、如果要考虑断电的情况或者用户不是正常通过系统提供的“退出系统”功能,而是直接关闭IE,我以前的做法是用一个JS脚本加上后台代码,判断客户端浏览器已关闭,这时调用后台的方法,清空Session,或者数据库在线标记改变(改为离线),这样下次就可以登录了
      

  7.   

    每5分钟更新一次状态,把上次响应时间超过5分钟的用户的状态更新为离线即可只有在SQL 或者 oracle里面做动作了页面的话我是没有办法的HTTP的工作状态的限制不知道怎么突破,帮你顶顶去问问 高歌 或者 SP1234 看看
      

  8.   

    客户端COOKIE加密和服务端验证。
    1、用户登录之后,向客户端发送保存此用户的加密信息,当然可以包括用户登录ID和PWD,用户在登录状态
       再次登录时,可以只判断客户端是否存在COOKIE信息,如果存在的话,就不能登录。
    2、如果是像LZ所讲的非法退出,用户再次尝试登录网站的时候,首先判断客户端是否存在这些加密信息,如果存在
       拿到服务端验证,验证成功则登录,不成功则重新登录
    3、用户正常退出后,销毁客户端COOKIE凭证。
       以上方法可以在服务端也加上票证验证,这样就增加了安全性。不知道LZ的意思如何?
      

  9.   


    有一定道理
    但是有时候客户端会把cookie这一功能关闭
    这时候问题又不好解决了