不要了, cookie 和 session 都做不到,因為, 那都是有時間限制的 .
從 http 協議本身來看,你只能通過 cookie 或 session 知道一個用戶在多久以前訪問過站點. 卻不能以此來拒絕用戶再次登入 , 因為,也許用戶關閉了原來的窗口, 只好重新登入 ...

解决方案 »

  1.   

    可以用数据库解决,当用户登录后在数据库里做个记录,当他关闭窗口时用<body  onunload=  "logout()"> 调用
    <scriot>  
    function  logout(){  
    window.open(  "logout.php  ");  
    }  
    </script>  
    logout.php用来更新数据库
     
      

  2.   

    这个可以作为logout.php
    <?php
    session_start();
    include_once "connect.php";
    $link=@mysql_connect($host,$loginname,$password) or exit();
    @mysql_select_db("user") or exit();
    $query="update studenttable set status='off' where uid='$session_id'";
    $result=mysql_query($query) or die("更新错误!");
    session_unregister("session_id");
    session_unregister("session_pwd");
    session_unregister("session_stuname");
    // 为了扩充,可以在这里加入语句,算是系统消息
    ?><html>
    <head></head>
    <body>
    <script language="Javascript">
    window.close();
    </script>
    </body>
    </html>
      

  3.   

    如果只是增加ip记录,别人还是可以在另外的机器上以同一个帐号登录,所以还是数据库最好。session可以实现吗,不可以吧!
      

  4.   

    Q1: 通常怎么记录用户已登录的?而防止他再次登录
    A1: 这做不到, 我相信我可以驳倒你给出的任何方法
        数据库记录? cookie?...都没用, 如果用户的机器s机或者reboot了怎么办
    Q2: 如果要禁止用户在一部机器上登录多个帐号,又怎么做?
    A2: 这个问题比较难说, 严格说, 你也没有办法做到. 
        检查ip? 不行...如果几个用户在LAN内, 他们的ip都一样, 难道你只允许他们中一个人上论坛?
      

  5.   

    建议大家也来讨论讨论这个问题:
    http://expert.csdn.net/Expert/TopicView1.asp?id=1378890
      

  6.   

    Q1: 通常怎么记录用户已登录的?而防止他再次登录
    A1: 这做不到, 我相信我可以驳倒你给出的任何方法
        数据库记录? cookie?...都没用, 如果用户的机器s机或者reboot了怎么办
    B1:数据库可以解决s机或者reboot的,如果用户已经登陆,就扫描数据库
    看是不是有其他用户的时间超时了,如果有其他用户超时的 就kick out!
    这样一来 任何时候都不会有用户看到其他用户的尸体!
    Q2: 如果要禁止用户在一部机器上登录多个帐号,又怎么做?
    A2: 这个问题比较难说, 严格说, 你也没有办法做到. 
        检查ip? 不行...如果几个用户在LAN内, 他们的ip都一样, 难道你只允许他们中一个人上论坛?
    B2:完全可以,只要在用户机器上留下点标记就行了,比如一个记录随机数字的cookie,然后在数据库写上同样的cookie信息,用户请求时,获取cookie的信息和数据库比较,如果发现数据库有就返回信息:一个机器只能一个帐户!
    只要随机数唯一就行!
      

  7.   

    对B1来说, 用户就有一段时间(timeout时间)无法登陆, 我想一个大站不会这样做的B2, 你说的没错, 可是你的假定是...大家都在用IE. 如果我用其他browser呢? 我自己写了个browser来欺骗你呢(骗你我这里没有留下cookie)? 这很容易做到的.
      

  8.   

    把上次登陆时间用cookie存起来的了
      

  9.   

    我不觉得把上次登陆时间用cookie存起来有什么帮助呀
      

  10.   

    我完全同意jeffhuang(杰夫) 觀點,在 HTTP 協議下,這根本就無解.
    因為, cookie 或者 Session ( 數據庫,不提也罷, 只是用 cookie+數據庫實現 session 而已 )都不能作判斷用戶是否確實在線. ( 只能做到 : 如果1分鐘前還有訪問,我就假設他現在還在線,如此假設而已 ) 
      

  11.   

    cookie和数据库的配合还是可以应付大多数的情况,至于说有人要自己编一个browser或者故意把cookie删掉,那也是实在没办法了