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