效果预览
添加此功能后,您可以在博客侧边栏或页脚等位置实时显示当前网站的在线访客数量,如下图所示:

实现步骤
步骤一:添加统计函数代码
默认主题:/usr/themes/default/functions.php
Handsome主题:/usr/themes/handsome/functions.php
在文件末尾添加以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
function online_users() { $filename = 'online.txt'; $cookiename = 'Typecho_Online'; $onlinetime = 30; $online = file_exists($filename) ? file($filename) : array(); $nowtime = $_SERVER['REQUEST_TIME']; $nowonline = array(); foreach($online as $line) { $row = explode('|', $line); $sesstime = trim($row[1]); if(($nowtime - $sesstime) <= $onlinetime) { $nowonline[$row[0]] = $sesstime; } } if(isset($_COOKIE[$cookiename])) { $uid = $_COOKIE[$cookiename]; } else { $vid = 0; do { $vid++; $uid = 'U'.$vid; } while(array_key_exists($uid, $nowonline)); setcookie($cookiename, $uid); } $nowonline[$uid] = $nowtime; $total_online = count($nowonline); if($fp = @fopen($filename, 'w')) { if(flock($fp, LOCK_EX)) { rewind($fp); foreach($nowonline as $fuid => $ftime) { $fline = $fuid.'|'.$ftime."\n"; @fputs($fp, $fline); } flock($fp, LOCK_UN); } fclose($fp); } return $total_online; }
|
步骤二:在模板中显示在线人数
通用方法(适用于任何位置)
在需要显示在线人数的模板文件中,添加以下代码:
1 2 3
| <div class="online-users"> 当前在线: <?php echo online_users(); ?> 人 </div>
|
Handsome主题侧边栏添加方法
编辑文件:/usr/themes/handsome/component/sidebar.php
在适当位置(如”统计信息”部分)添加:
1 2 3 4 5
| <li class="list-group-item"><div class="text-second"> <span class="blog-info-icons"> <i data-feather="user"></i></span> <span class="badge pull-right"><?php echo online_users() ?> </span><?php _me("在线人数") ?></li>
|

页脚添加方法
编辑主题的footer.php文件,在合适位置添加:
1 2 3 4
| <div class="site-info"> <!-- 其他页脚信息 --> <span class="online-count">当前在线: <?php echo online_users(); ?> 人</span> </div>
|