您的位置:首页 > 其它

记录用户总在线时间的HACK

2007-05-12 22:42 375 查看
未完成版.

现在只能记录时间,而不能在其他地方看出来.有时间再把等级也弄进去.

1.运行sql
alter table xoops_users add onlinetime int not null default 0

xoops_ 是你的数据库前缀 默认为xoops
2.修改kernel/online.php

修改 write 函数为

function write($uid, $uname, $time, $module, $ip)
{
$uid = intval($uid);
if ($uid > 0) {
//$sql = "SELECT COUNT(*) FROM ".$this->db->prefix('online')." WHERE online_uid=".$uid;
$sql = "SELECT `online_updated` FROM ".$this->db->prefix('online')." WHERE online_uid=".$uid;
} else {
$sql = "SELECT COUNT(*) FROM ".$this->db->prefix('online')." WHERE online_uid=".$uid." AND online_ip='".$ip."'";
}
list($count) = $this->db->fetchRow($this->db->queryF($sql));
if ( $count > 0 ) {
$onlinetime = ($time - $count)>0?($time - $count):0;//count is online_updated when uid > 0
//$sql = "UPDATE ".$this->db->prefix('online')." SET online_updated=".$time.", online_module = ".$module." WHERE online_uid = ".$uid;
$sql = "UPDATE ".$this->db->prefix('online').",".$this->db->prefix('users')." SET online_updated=".$time.", online_module = ".$module.", onlinetime = onlinetime + ".$onlinetime." WHERE online_uid = ".$uid." AND uid = ".$uid;
if ($uid == 0) {
$sql .= " AND online_ip='".$ip."'";
}
} else {
$sql = sprintf("INSERT INTO %s (online_uid, online_uname, online_updated, online_ip, online_module) VALUES (%u, %s, %u, %s, %u)", $this->db->prefix('online'), $uid, $this->db->quoteString($uname), $time, $this->db->quoteString($ip), $module);
}
if (!$this->db->queryF($sql)) {
return false;
}
return true;
}


必须打开who's online区块才能统计.

本来修改session.php也能有一样的结果且不用打开who's online也可以统计 但修改这个比较方便就偷懒了~~ :-D
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐