有种方法是用数据库实现的很耗资源
如果你想听可以继续,如果不想听则返回!
因为我们无法知道对方何时关闭浏览器走人,所以我们要给出一个时间来作为对方不线的依据
例如:5分钟  就是说对方上一次操作你所纪录的时间和当前时间相差大于了5分钟,我们则认为他不在线,条件是对方的每一次操作你都必须更新你数据库中相应ID的时间。大概就是这样的,其实解决方法很多,你可以去www.google.com上去搜,我的这种方法不太好!
实现的方法都有了,你还要代码做什么,因该自己写啊,锻炼一下,也就是一些简单的数据库操作!
如果有什么不妥之处不要笑话我,帮我指出,我也才学没多长时间!

解决方案 »

  1.   

    针对自己的情况需要修改 一下<?
    $ip = $_SERVER["REMOTE_ADDR"];
    $time = time();
    $minutes = 15;
    $found = 0;
    $users = 0;
    $user  = "";$tmpdata = $DOCUMENT_ROOT."/online/data";if (!is_file("$tmpdata/online.txt"))
    {
    $s = fopen("$tmpdata/online.txt","w");
    fclose($s);
    chmod("$tmpdata/online.txt",0666);
    }$f = fopen("$tmpdata/online.txt","r+");
    flock($f,2);while (!feof($f))
    {
    $user[] = chop(fgets($f,65536));
    }fseek($f,0,SEEK_SET);
    ftruncate($f,0);foreach ($user as $line)
    {
    list($savedip,$savedtime) = split("|",$line);
    if ($savedip == $ip) {$savedtime = $time;$found = 1;}
    if ($time < $savedtime + ($minutes * 60)) 
    {
    fputs($f,"$savedip|$savedtimen");
    $users = $users + 1;
    }
    }if ($found == 0) 
    {
    fputs($f,"$ip|$timen");
    $users = $users + 1;
    }fclose ($f);
    print "在线人数: <font color=black>$users</font>
    ";
    ?>