Typecho添加实时在线人数统计功能

514 字
3 分钟
Typecho添加实时在线人数统计功能

效果预览#

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

效果预览
效果预览

实现步骤#

步骤一:添加统计函数代码#

默认主题:/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>

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
Typecho添加实时在线人数统计功能
https://fanrich.eu.org/posts/程技/typecho/typecho添加实时在线人数统计功能/
作者
richfan
发布于
2026-02-01
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
richfan
Hello, I'm richfan.
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
779
分类
8
标签
138
总字数
3,267,679
运行时长
0
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
Firefly v6.13.5
文章许可
CC BY-NC-SA 4.0

文章目录