From 16e6ede25e3b2499029be46c0c3efadf168445e4 Mon Sep 17 00:00:00 2001 From: xiaosong Date: Tue, 2 Apr 2013 01:02:19 +0800 Subject: [PATCH] 1.7.1 --- README.md | 10 +- online2.php | 224 ++++++++++++++++++++++---------------------- online2_setting.php | 140 +++++++++++++-------------- 3 files changed, 187 insertions(+), 187 deletions(-) diff --git a/README.md b/README.md index e58b81b..35119ec 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -emlog 在线统计插件 -==================== - -显示当前在线人数及最高纪录,后台显示当前在线列表并可自定义过滤的蜘蛛UA标记。在前台可以显示当前在线人数及最高记录,还可显示数据库查询次数。 - +emlog 在线统计插件 +==================== + +显示当前在线人数及最高纪录,后台显示当前在线列表并可自定义过滤的蜘蛛UA标记。在前台可以显示当前在线人数及最高记录,还可显示数据库查询次数。 + [插件主页](http://xiaosong.org/tech/new-version-online-statistics-plugin-released) \ No newline at end of file diff --git a/online2.php b/online2.php index 5daf10e..f855982 100644 --- a/online2.php +++ b/online2.php @@ -1,113 +1,113 @@ -query("SELECT 1 FROM ".DB_PREFIX."online2 WHERE ip='".$stringIp."'"); - if (!$DB->num_rows($inDB)) { - $DB->query("INSERT INTO ".DB_PREFIX."online2 (ip, useragent) VALUES('".$stringIp."', '".$useragent."')"); - } else { - $DB->query("UPDATE ".DB_PREFIX."online2 SET dt=NOW(), useragent = '".$useragent."' WHERE ip='".$stringIp."'"); - } - if (ROLE == 'admin') { - $DB->query("DELETE FROM ".DB_PREFIX."online2 WHERE dt $maxOnline) { - $cacheData = serialize(array('maximum' => $nowOnline, 'maxDate' => time())); - Option::updateOption('maxOnline', $cacheData); - $CACHE = Cache::getInstance(); - $CACHE->updateCache('options'); - } - } -} -addAction('index_head', 'online2'); -addAction('adm_head', 'online2'); - -function maxOnline(){ - $data = unserialize(Option::get('maxOnline')); - return $data; -} - -function nowOnline(){ - $DB = MySql::getInstance(); - $res_now = $DB->once_fetch_array("SELECT count(1) AS total FROM ".DB_PREFIX."online2 WHERE dt>SUBTIME(NOW(),'0 0:10:0') "); - $nowOnline = $res_now['total']; - return $nowOnline; -} - -function onlineOutput(){ - global $is_querycount, $query_template; - $DB = MySql::getInstance(); - $maxOnline = maxOnline(); - $nowOnline = nowOnline(); - $maxOnlineTime = smartDate($maxOnline["maxDate"], 'Y-m-d'); - $queryCount = $DB->getQueryCount(); - $queryCountTemplate = str_replace('{queryCount}', $queryCount, $query_template); - $queryCountOutput = (isset($is_querycount) && $is_querycount == 'true') ? $queryCountTemplate : ''; - echo '总计 '.$nowOnline.' 人在线 - 最高纪录是 '.$maxOnline["maximum"].' 于 '.$maxOnlineTime.$queryCountOutput.''; -} - -if ($is_footer == 'true') { - addAction('index_footer', 'onlineOutput'); -} - -//仅供后台使用 -function displayOnlineList(){ - $DB = MySql::getInstance(); - $res_nowonline = $DB->query("SELECT ip, dt, useragent FROM ".DB_PREFIX."online2 order by dt DESC"); - $output_online = ''; - while($row = $DB->fetch_array($res_nowonline)){ - $iplocation = function_exists('convertip') ? '[- '.convertip($row['ip']).']' : ''; - $output_online .= empty($row) ? '暂无在线访客' : ''.$row['ip'].$iplocation.''.$row['dt'].''.$row['useragent'].''; - } - return $output_online; -} - -function online_backup(){ - $DB = MySql::getInstance(); - global $tables; - $is_exist_online2_query = $DB->query('show tables like "'.DB_PREFIX.'online2"'); - if($DB->num_rows($is_exist_online2_query) != 0) array_push($tables, 'online2'); -} -addAction('data_prebakup', 'online_backup'); - -function online_menu() -{ - echo ''; -} -addAction('adm_sidebar_ext', 'online_menu'); +query("SELECT 1 FROM ".DB_PREFIX."online2 WHERE ip='".$stringIp."'"); + if (!$DB->num_rows($inDB)) { + $DB->query("INSERT INTO ".DB_PREFIX."online2 (ip, useragent) VALUES('".$stringIp."', '".$useragent."')"); + } else { + $DB->query("UPDATE ".DB_PREFIX."online2 SET dt=NOW(), useragent = '".$useragent."' WHERE ip='".$stringIp."'"); + } + if (ROLE == 'admin') { + $DB->query("DELETE FROM ".DB_PREFIX."online2 WHERE dt $maxOnline) { + $cacheData = serialize(array('maximum' => $nowOnline, 'maxDate' => time())); + Option::updateOption('maxOnline', $cacheData); + $CACHE = Cache::getInstance(); + $CACHE->updateCache('options'); + } + } +} +addAction('index_head', 'online2'); +addAction('adm_head', 'online2'); + +function maxOnline(){ + $data = unserialize(Option::get('maxOnline')); + return $data; +} + +function nowOnline(){ + $DB = MySql::getInstance(); + $res_now = $DB->once_fetch_array("SELECT count(1) AS total FROM ".DB_PREFIX."online2 WHERE dt>SUBTIME(NOW(),'0 0:10:0') "); + $nowOnline = $res_now['total']; + return $nowOnline; +} + +function onlineOutput(){ + global $is_querycount, $query_template; + $DB = MySql::getInstance(); + $maxOnline = maxOnline(); + $nowOnline = nowOnline(); + $maxOnlineTime = smartDate($maxOnline["maxDate"], 'Y-m-d'); + $queryCount = $DB->getQueryCount(); + $queryCountTemplate = str_replace('{queryCount}', $queryCount, $query_template); + $queryCountOutput = (isset($is_querycount) && $is_querycount == 'true') ? $queryCountTemplate : ''; + echo '总计 '.$nowOnline.' 人在线 - 最高纪录是 '.$maxOnline["maximum"].' 于 '.$maxOnlineTime.$queryCountOutput.''; +} + +if ($is_footer == 'true') { + addAction('index_footer', 'onlineOutput'); +} + +//仅供后台使用 +function displayOnlineList(){ + $DB = MySql::getInstance(); + $res_nowonline = $DB->query("SELECT ip, dt, useragent FROM ".DB_PREFIX."online2 order by dt DESC"); + $output_online = ''; + while($row = $DB->fetch_array($res_nowonline)){ + $iplocation = function_exists('convertip') ? '[- '.convertip($row['ip']).']' : ''; + $output_online .= empty($row) ? '暂无在线访客' : ''.$row['ip'].$iplocation.''.$row['dt'].''.$row['useragent'].''; + } + return $output_online; +} + +function online_backup(){ + $DB = MySql::getInstance(); + global $tables; + $is_exist_online2_query = $DB->query('show tables like "'.DB_PREFIX.'online2"'); + if($DB->num_rows($is_exist_online2_query) != 0) array_push($tables, 'online2'); +} +addAction('data_prebakup', 'online_backup'); + +function online_menu() +{ + echo ''; +} +addAction('adm_sidebar_ext', 'online_menu'); ?> \ No newline at end of file diff --git a/online2_setting.php b/online2_setting.php index 07bf4b1..f4db2a0 100644 --- a/online2_setting.php +++ b/online2_setting.php @@ -1,71 +1,71 @@ - - -
在线统计 -插件设置完成 -
-
- -

-
- - - - - - - - - -
ip地址上线时间UserAgent信息
- -
-
你可以根据上面的在线信息,添加你要排除在外的蜘蛛的特征UserAgent信息,每一个特征字符串用(|)分开,不区分大小写
-
-

-

可用变量:{queryCount} -- 查询次数

-

样式和位置完全取决于主题!

-

-
-"; - $file = EMLOG_ROOT.'/content/plugins/online2/online2_config.php'; - @ $fp = fopen($file, 'wb') OR emMsg('读取文件失败,如果您使用的是Unix/Linux主机,请修改文件/content/plugins/online2/online2_config.php的权限为755或777。如果您使用的是Windows主机,请联系管理员,将该文件设为everyone可写'); - @ $fw = fwrite($fp,$data) OR emMsg('写入文件失败,如果您使用的是Unix/Linux主机,请修改文件/content/plugins/online2/online2_config.php的权限为755或777。如果您使用的是Windows主机,请联系管理员,将该文件设为everyone可写'); - fclose($fp); -} + + +
在线统计 +插件设置完成 +
+
+ +

+
+ + + + + + + + + +
ip地址上线时间UserAgent信息
+ +
+
你可以根据上面的在线信息,添加你要排除在外的蜘蛛的特征UserAgent信息,每一个特征字符串用(|)分开,不区分大小写
+
+

+

可用变量:{queryCount} -- 查询次数

+

样式和位置完全取决于主题!

+

+
+"; + $file = EMLOG_ROOT.'/content/plugins/online2/online2_config.php'; + @ $fp = fopen($file, 'wb') OR emMsg('读取文件失败,如果您使用的是Unix/Linux主机,请修改文件/content/plugins/online2/online2_config.php的权限为755或777。如果您使用的是Windows主机,请联系管理员,将该文件设为everyone可写'); + @ $fw = fwrite($fp,$data) OR emMsg('写入文件失败,如果您使用的是Unix/Linux主机,请修改文件/content/plugins/online2/online2_config.php的权限为755或777。如果您使用的是Windows主机,请联系管理员,将该文件设为everyone可写'); + fclose($fp); +} ?> \ No newline at end of file