麻辣堂|资源主站|开发论坛|在线手册
首页 Apache Linux Java MySQL 注册帮助 
PHP项目开发组是PHP开发资源网于2007组年建成立的项目开发团队,目前核心开发成员有27人, 项目协作成员8名.下设7个开发组,主要承接大/中型网站项目开发任务。

    由于开发任务较多,人员比较紧张,现面向社会招聘全职或者兼职开发人员,不管你是在校大学生,还是全职开发人员,以及SOHO都可以联系本站,我们可以长期合作,并为您带来丰厚的报酬。
  您现在的位置:PHP开发资源网 > 麻辣堂 > 详细资料
待解决
各位看看我写的用户访问统计,提提意见。
悬赏分:20 - 2007年05月31日

---------------------------------------------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);
?>

提问者:hulenbel   05-31 14:02
答复
路过。。。顺便帮顶:)
回答者:玉米づ冰冻可乐 - 瓦岗村民 8-22 09:10
我也来回答:
不管你有没有帮助我们,瓦岗寨8万村民将感谢你。。。。。

为防止灌水,您需要计算一道数学题: 答案:
69 + 88 = ? 请将计算结果填在上面

 
[]
©2007 PhpRes.COM