使用数据库session
这个东西是不可能独立存在的

解决方案 »

  1.   

    <?php //首先你要有读写文件的权限//本程序可以直接运行,第一次报错,以后就可以  $online_log = "count.dat"; //保存人数的文件,  $timeout = 30;//30秒内没动作者,认为掉线   $entries = file($online_log);    $temp = array();     for ($i=0;$i<count($entries);$i++) {    $entry = explode(",",trim($entries[$i]));    if (($entry[0] != getenv('REMOTE_ADDR')) && ($entry[1] > time())) {     array_push($temp,$entry[0].",".$entry[1]."\n"); //取出其他浏览者的信息,并去掉超时者,保存进$temp   }   }     array_push($temp,getenv('REMOTE_ADDR').",".(time() + ($timeout))."\n"); //更新浏览者的时间  $users_online = count($temp); //计算在线人数   $entries = implode("",$temp);   //写入文件  $fp = fopen($online_log,"w");    flock($fp,LOCK_EX); //flock() 不能在NFS以及其他的一些网络文件系统中正常工作   fputs($fp,$entries);    flock($fp,LOCK_UN);    fclose($fp);     echo "当前有".$users_online."人在线"; ?> 
      

  2.   

    <html> 
    <head> 
    <meta http-equiv="refresh" content="10; url=many.php"> 
    </head> 
    <body> 
    <center> 
    <? 
    $time=gettimeofday(void); 
    $tmp=file("time.txt"); 
    if ($tmp[0]=="") 
    {   $fopen0=fopen("time.txt","w+"); 
      fputs($fopen0,$time[sec]); 
      fclose($fopen0);   $fopen1=fopen("ip.txt","w+"); 
      fputs($fopen1,""); 
      fclose($fopen1); 

    $tmp1=file("time.txt"); 
    $equal=($time[sec]-$tmp1[0]); 
    if ($equal>60) 
    {   $fopen0=fopen("time.txt","w+"); 
      fputs($fopen0,""); 
      fclose($fopen0); 
    } $fopen=fopen("ip.txt","a+"); 
    $ip=$REMOTE_ADDR; $flag=1; 
    $tmp2=file("ip.txt"); 
    $con=count($tmp2); for ($i=0;$i<$con;$i++) 

      if ($ip."\n"==$tmp2[$i]) 
      { 
      $flag=0; 
      break; 
      } 
    } if ($flag==1) 

      $ipstring=$ip."\n"; 
      fputs($fopen,$ipstring); 

    fclose($fopen); $tmp3=file("ip.txt"); 
    $value=count($tmp3); 
    echo "目前線上人數:".$value; 
    ?> 
    </center> 
    </body> 
    </html> 
      

  3.   

    /* 
    程序用途:检测在线用户
    程序作者:heiyeluren
    写作时间:2004/6 
    */ <? session_cache_limiter("private,max-age=10800"); ?>
    <? @session_start(); ?>
    <? include("Function.php"); ?>
    <? include("ConnDB.php"); ?>
    <? include("Const.php"); ?>
    <?php 
    //在线用户处理if (isset($user_name))//如果session写了,那么用户已经登陆
    {
     $result = mysql_query("SELECT * FROM aliang_online WHERE OnlineUser  = '$user_name' ") or die($die_msg."用户有没有写入在线列表"); 
       //查询看看用户有没有写入在线列表
     $num = mysql_num_rows($result); if ($num != 0) //如果已经写入了在线列表,就更新最后在线时间和状态
     {  //$now_time是自定义的一个常量,代表现在时间的时间戳,该常量在const.php中设置
      mysql_query("UPDATE aliang_online SET LastTime = $now_time,UserState = 1 WHERE OnlineUser = '$user_name' ") or die($die_msg."如果写了,那就更新时间");
     }
     else  //如果用户没有在在线列表,那么就把该用户写入在线用户列表    
     {
      mysql_query("INSERT INTO aliang_online SET OnlineUser = '$user_name' , LoginIP = '$REMOTE_ADDR' , LoginTime = $now_time , LastTime = $now_time , UserState = 1 ") or die($die_msg."如果没有写,那就写");
     }
    }
    else   //如果用户没有登陆,或者是访客,那么就使用IP地址来定位是否已经在在线列表
    {
     $result = mysql_query("SELECT * FROM aliang_online WHERE LoginIP = '$REMOTE_ADDR' ") or die($die_msg."如果是访客,就看看有没他IP");
     $num = mysql_num_rows($result);
     
     if ($num != 0) //如果访客的IP地址已经在列表中了,那么就更新访客最后时间和状态
     {
      mysql_query("UPDATE aliang_online SET LastTime = $now_time,UserState = 1 WHERE LoginIP = '$REMOTE_ADDR' ") or die($die_msg."如果有IP,就更新他的时间");
     }
     else  //如果访客的IP地址不在列表中,那么就写入列表 
     {
      mysql_query("INSERT INTO aliang_online SET OnlineUser = '访客' ,LoginIP = '$REMOTE_ADDR' , LoginTime = $now_time , LastTime = $now_time , UserState = 1 ")  or die($die_msg."如果没有IP.就写");
     }
    }?> <?php
    //删除一段时间没有动作的用户//删除一个在线用户的时间是现在时间减去更新时间,$update_time是个常量,从const.php中设置
    $del_time = ($now_time - $update_time);//从数据库中删除$update_time时间内没有动作的访客
    mysql_query("DELETE FROM aliang_online WHERE LastTime < $del_time AND OnlineUser = '访客' ")
     or die($die_msg."删除一段时间没动作的用户");//更新一段时间没有动作的会员在线状态为0
    mysql_query("UPDATE aliang_online SET UserState = 0 WHERE LastTime < $del_time AND OnlineUser != '访客' ")
     or die($die_msg."更新注册会员的在线状态为0");//以下的代码用来处理会员的在线时间
    $sql = "SELECT * FROM aliang_online WHERE UserState = 0 AND OnlineUser != '访客' ";
    $result = mysql_query($sql) or die($die_msg."选择所有会员的资料");for ($i = 0; $i<mysql_num_rows($result); $i++)  //循环把注册用户的在线时间写入数据库
    { $row = mysql_fetch_object($result)  //读出已经下线用户的信息
      or die($die_msg."读出已经下线用户的信息"); $result1 = mysql_query("SELECT FullTime FROM aliang_user WHERE UserName = '$row->OnlineUser' ")
      or die($die_msg."读出用户以前的在线时间");
     $row1 = mysql_fetch_object($result1); $full_time = $row1->FullTime;  //读取对应用户以前所有在线的时间
     
     $result2 = mysql_query("SELECT LoginTime,LastTime FROM aliang_online WHERE OnlineUser = '$row->OnlineUser' ")
      or die($die_msg);
     $row2 = mysql_fetch_object($result2);
     $result_time = CountTime($row2->LoginTime,$row2->LastTime);  //计算出该用户现在已经在线的时间 $full_time = $full_time + $result_time;  //计算出所有的在线时间
     
     mysql_query("UPDATE aliang_user SET FullTime = $full_time WHERE UserName = '$row->OnlineUser' ")
      or die($die_msg);  //把该用户所有的在线时间写如数据库 mysql_query("DELETE FROM aliang_online WHERE OnlineUser = '$row->OnlineUser' ")
      or die($die_msg);  //获取完数据后删除该用户}?>
      

  4.   

    heiyeluren(黑夜路人) :这些文件怎么不也帖出来
    <? include("Function.php"); ?>
    <? include("ConnDB.php"); ?>
    <? include("Const.php"); ?>