HTTP是无状态的协议,只能每隔一段时间判断一下。
无法用其它方法

解决方案 »

  1.   

    没有必要重开页面,你可以在要判断的页面输入下面代码进行刷新,后面的3表示3秒中刷一次<?
      echo "<meta http-equiv=refresh content='3;'>';
    ?>
      

  2.   

    大家是否想过读取 session 临时文件。
      

  3.   

    判断用户登陆的时候判断以下seesion_id,如果第2个人登陆后,更新这个id,第1个人就会掉下来
     这个怎么写?
      

  4.   

    1、不需要不断刷新。只需在有登录请求时判断该用户名是否已登录和超时
    2、不能用seesion_id判断。seesion_id只针对独立的连接,每个浏览器都有唯一的seesion_id
    你不可能遍历全部session临时文件去查找的
      

  5.   

    To  xuzuning(唠叨):我怎么判断他是否登录?数据库加入一个标记?设超时30分钟。
    可是如果他10分钟页面关闭,我又怎么更新数据库呢?
      

  6.   

    To  xuzuning(唠叨):我怎么判断他是否登录?数据库加入一个标记?设超时30分钟。
    可是如果他10分钟页面关闭,我又怎么更新数据库呢?那你在用户登陆的时候判断
    如果上次登陆时间在10分钟之内的就说明已经登陆,警告它不让它登陆
    如果上次登陆时间在30分钟以外的说明他是自己关闭的页面,放行并更新上次登陆时间
      

  7.   

    outrace(欧阳云天) :那样的说的话,问题出来了:>10 <30 可以让其他用户登录了,那绝对是不充许的。xuzuning(唠叨) :你的意思是说:一个用户只充许在 30分钟内登录一次。
      

  8.   

    我想通过session的值来判断,对记录的session进行判断
      

  9.   

    To: 52juanjuan(Fibona) :具体点
      

  10.   

    To  xuzuning(唠叨): 对于你的说法,对于在线用户是否 每个页面包含一个刷新页面。
      

  11.   

    如果第2个人登陆后,更新这个id,第1个人就会掉下来这个怎么写?
    我写过一个,是ip地址验证的,好处是不用考虑是否在线的问题,不过如果是那种共享上网的就没有办法了,我的思路是在登录时记录其ip地址,然后用实际得到的ip与记录中的比较,如果不同则为无效用户。这样最直接的结果就是先登录的就失效了
      

  12.   

    把SESSION放到数据库里,就可以判断了
      

  13.   

    用判断session或者cook的有效时间来判断
      

  14.   

    方案1:
    如果你的网站,访问量不大,(内部使用就2,3百人)的情况
    可以采用  唠叨 的办法
    ==============================>
    给用户表加一个字段记录该用户最后访问时间。
    当有用户注册或访问时,检查该时间是否有或是否超时30分钟
    ==============================>
    当前的用户每访问一次,每个页面的头上,都对其最后访问时间进行更新这样的做法是,控制好,很准确,准确的符合用户的需要。
    但是效率不够,因为每个页面的前面,总要更新用户最后访问的时间,以保持最新。
    在访问量不高的情况下可以。
    如果你的用户很多,访问也很频繁,那么方案1就不适合了,因为数据服务器的负担太重。//--------------------------------------------------------------------------------
    // 注:开个小页面刷新,不建议使用,因为其开销更大,你做个什么学习的 sample 还可以。其效率还没有 方案1好。
    //--------------------------------------------------------------------------------方案2:
    把 session_id ,以及用户 login_name 存在数据库里面。
    采用后登入者踢出前登入者的思路。(楼主自己也提到这点)(MSN Messager也是如此)
    采用踢出的办法,比较安全。 不会存在死锁的问题。
    而且对数据库的操作少,负荷轻。(建议使用)
      

  15.   

    单纯通过Session是不能解决的,两种方法:1。通过后台数据库或文本等方式对用户的登录状态进行标识然后处理,或者通过全局的东东作,好久不写php,记不太清了,类似application的东西。
      

  16.   

    对于 liyujie2000(开心的鱼)你的方案1,大家还有没什么好办法?就是 不让第二个登录。
      

  17.   

    liyujie2000(开心的鱼)你的方案2:
    你认为怎么踢好?
    我第二台机子登录,发现 session_id 与第一个台机子的不符,然后更新数据库,那如何踢
    第一个呢?删除 session 文件?
    How to do it?
    session_destory()结束目前的session;
     session_unregister(); //好像不行
      

  18.   

    许多大网站提供的邮箱系统都是这样的,超过一定时间没有活动就自动退出
    但是在这段时间内,进行操作的话就永远不掉线
    至于如何实现,我也想知道……怎么定义时间的判断呢?
    要session吗,或者除了session还需要什么?
      

  19.   

    就用 session!
    你页面中定义一个帐户ID存放在每个页的SESSION里。第二个用户登录以后他的帐户ID又会存在同样变量的SESSION里,自然之前的页面就不能再以以前的身份进行任何操作了。
    很EASY,你可以亲自去试,不用这么多疑问。
    也不需要session_destroy
      

  20.   

    至于大网站的自动退出,没有什么特别的讲究,只是session_timeout()而已!
    一旦session timed out,存放在SESSION里才用户ID就没有了,于是页面无法访问。更不需要什么建立个表来跟踪时间。
    唯一需要跟踪时间的可能就是统计在线人数了。