AI摘要

如何在博客侧边栏添加在线人数统计功能。

效果预览

位置在侧边栏的博客信息里面,效果图如下:

请输入图片描述

实现步骤

  1. 添加统计函数,在/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;
    }
  2. 在博客信息显示,在/usr/themes/handsome/component/sidebar.php文件中添加
<li class="list-group-item 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>

请输入图片描述

最后刷新一下网站就可以看到了~

END
本文作者: 文章标题:博客信息添加在线人数
本文地址:https://lyj15.cn/807.html
版权说明:若无注明,本文皆羡逍遥原创,转载请保留文章出处。
最后修改:2025 年 10 月 28 日
如果觉得我的文章对你有用,请随意赞赏