![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
---------------------------------------------online.php----------------------------------------------------
<?
@session_start(); //注册session全局变量
$onlinefile = "online.txt"; //当前在线用户信息保存文件
$onlineTime = 300; // 在线的时间差秒数
$timestamp = time(); // 取得当前的Unix时间戳
$dataarray = file($onlinefile); // 将数据文件读入数组,每行一条记录
$onlinenum = count($dataarray); // 在线人数
$addflag=true;
$curuser=$HTTP_SESSION_VARS["username"];
if(strcmp(trim($curuser),"")==0) $curuser="匿名用户";//如果会话变量中的username为空,则表明该用户并没有登录
$cursession=session_id();
require("dbfunc/GeneralQuery.php");
$query=new DbQuery();//自己封装的通用数据库访问类,目前包括oracle和sybase
$query->StartDb();
for($i = 0; $i < $onlinenum; $i++)
{
$onerec = chop($dataarray[$i]); // 去除记录尾部的\n
list($session,$user,$hostname,$ipadd, $logintime, $lastfreshtime) = explode(',', $onerec); // 取得数据
//如果是当前会话,就更新Unix时间戳 if(strcmp(trim($session),trim($cursession))==0)
{
$lastfreshtime=$timestamp;
$dataarray[$i] = $session.','.$curuser.','.$hostname.','.$ipadd.','.$logintime.','.$timestamp."\n";
$addflag=false;
}
if($lastfreshtime < ($timestamp - $onlineTime)) // 不在线,删除本条数据记录
{
$dataarray[$i] = "";
//保存离线用户的访问日志到数据库中
$sql="insert into WEB用户日志表 values('$user','$hostname','$ipadd',$logintime,$lastfreshtime)";
$query->Query($sql,$vals,$fields,$retinf,DATATYPE_HIS);
}
}
if($addflag)
{
$hostname=$HTTP_SERVER_VARS["REMOTE_HOST"];
$ipadd=$HTTP_SERVER_VARS["REMOTE_ADDR"];
$dataarray[$onlinenum]=$cursession.','.$curuser.','.$hostname.','.$ipadd.','.$timestamp.','.$timestamp."\n";
$addflag=false;
}
$query->CloseDb();
// 写入数据文件
$fp = fopen($onlinefile, 'w');
$text=implode("",$dataarray);
fwrite($fp, $text);
fclose($fp);
?>

