## 效果预览 添加此功能后,您可以在博客侧边栏或页脚等位置实时显示当前网站的在线访客数量,如下图所示: ![预览][1] ## 实现步骤 ### 步骤一:添加统计函数代码 - 默认主题:`/usr/themes/default/functions.php` - Handsome主题:`/usr/themes/handsome/functions.php` 在文件末尾添加以下代码: [collapse status="false" title="展开查看代码"] ```php /** * 在线人数统计函数 */ function online_users() { // 基本配置参数 $filename = 'online.txt'; // 数据文件路径,默认在网站根目录 $cookiename = 'Typecho_Online'; // Cookie名称,用于标识访客 $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; } } // 处理当前访客的Cookie if(isset($_COOKIE[$cookiename])) { // 已有Cookie,获取访客ID $uid = $_COOKIE[$cookiename]; } else { // 无Cookie,生成新的唯一访客ID $vid = 0; do { $vid++; $uid = 'U'.$vid; } while(array_key_exists($uid, $nowonline)); // 设置Cookie,默认会话期有效 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; } ``` [/collapse] ### 步骤二:在模板中显示在线人数 #### 通用方法(适用于任何位置) 在需要显示在线人数的模板文件中,添加以下代码: ```php 当前在线: 人 ``` #### Handsome主题侧边栏添加方法 1. 编辑文件:`/usr/themes/handsome/component/sidebar.php` 2. 在适当位置(如"统计信息"部分)添加: ```php ``` ![位置][2] #### 页脚添加方法 编辑主题的`footer.php`文件,在合适位置添加: ```php 当前在线: 人 ``` [1]: https://static.blog.ybyq.wang/usr/uploads/2025/05/17/2025-05-17T06:32:28.png?x-oss-process=style/shuiyin [2]: https://static.blog.ybyq.wang/usr/uploads/2025/05/17/2025-05-17T06:37:44.png?x-oss-process=style/shuiyin AI摘要 本文介绍了如何在Typecho博客中添加实时在线人数统计功能。首先,在主题的functions.php文件中添加统计函数代码,然后在模板中添加代码以显示在线人数。提供了通用方法和特定主题的侧边栏及页脚添加方法。通过这些步骤,可以在博客的侧边栏或页脚实时显示当前网站的在线访客数量。 此内容根据文章生成,仅用于文章内容的解释与总结 效果预览 添加此功能后,您可以在博客侧边栏或页脚等位置实时显示当前网站的在线访客数量,如下图所示: 实现步骤 步骤一:添加统计函数代码 默认主题:/usr/themes/default/functions.php Handsome主题:/usr/themes/handsome/functions.php 在文件末尾添加以下代码: 展开查看代码 /** * 在线人数统计函数 */ function online_users() { // 基本配置参数 $filename = 'online.txt'; // 数据文件路径,默认在网站根目录 $cookiename = 'Typecho_Online'; // Cookie名称,用于标识访客 $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; } } // 处理当前访客的Cookie if(isset($_COOKIE[$cookiename])) { // 已有Cookie,获取访客ID $uid = $_COOKIE[$cookiename]; } else { // 无Cookie,生成新的唯一访客ID $vid = 0; do { $vid++; $uid = 'U'.$vid; } while(array_key_exists($uid, $nowonline)); // 设置Cookie,默认会话期有效 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; } 步骤二:在模板中显示在线人数 通用方法(适用于任何位置) 在需要显示在线人数的模板文件中,添加以下代码: <div class="online-users"> 当前在线: <?php echo online_users(); ?> 人 </div> Handsome主题侧边栏添加方法 编辑文件:/usr/themes/handsome/component/sidebar.php 在适当位置(如"统计信息"部分)添加: <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文件,在合适位置添加: <div class="site-info"> <!-- 其他页脚信息 --> <span class="online-count">当前在线: <?php echo online_users(); ?> 人</span> </div> © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏 END 本文作者: xuan 文章标题:Typecho添加实时在线人数统计功能 本文地址:https://blog.ybyq.wang/archives/331.html 版权说明:若无注明,本文皆Xuan's blog原创,转载请保留文章出处。 文章引用 反向引用 Loading... 暂未引用其他文章 暂未被其它文章引用 下一篇 上一篇 ※最新文章推荐※ Typecho博客为文章添加AI摘要功能(Handsome主题优化版) 2025-05-17 Typecho添加实时在线人数统计功能 2025-05-17 handsome主题添加服务器状态栏实现代码(Debian适配版) 2025-05-17 Ngrok 配置:实现 Uniapp 前后端项目内网穿透 2025-05-16 Git报错:Another git process seems to be running in this repository 2025-05-11 阿里云OSS+CDN自动添加文章图片水印配置指南 2025-05-10 发表评论 取消回复 使用cookie技术保留您的个人信息以便您下次快速评论,继续评论表示您已同意该条款 评论 * 打卡 语录 名称 * 🎲 邮箱 * 地址 发表评论 提交中...