AI摘要
本文介绍了如何在Typecho博客中使用PHP代码添加实时在线人数显示功能。首先,在`functions.php`文件中添加在线人数统计代码,包括数据文件、Cookie名称、在线有效时间等参数设置。然后,在需要显示在线人数的位置添加代码,如`footer.php`页脚文件或Handsome主题的`sidebar.php`文件。通过这种方式,可以方便地在博客中实时显示在线人数。
说明
- 在线人数统计时间可以自行调整,默认的是30秒刷新一次
- 统计日志文件位置可以自行指定,默认在网站根目录创建
- 代码对于Typecho程序应该是通用的,也适用于本站目前使用的Handsome主题
效果
代码
在Typecho的functions.php
文件中添加以下代码;
Handsome主题的functions.php
文件位置在/usr/themes/handsome/functions.php
展开查看详情
//在线人数
function online_users() {
$filename='online.txt'; //数据文件
$cookiename='Nanlon_OnLineCount'; //Cookie名称
$onlinetime=30; //在线有效时间
$online=file($filename);
$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);
}
}
echo "$total_online";
}
然后在需要显示输出的地方添加以下代码,比如
footer.php
页脚文件;Handsome主题添加到
/usr/themes/handsome/component/sidebar.php
文件;# 通用代码
<?php echo online_users() ?>
# Handsome主题
<li class="list-group-item"> <i class="glyphicon glyphicon-user text-muted text-muted"></i> <span class="badge
pull-right"><?php echo online_users() ?></span><?php _me("在线人数") ?></li>