统计当前在线人数以及访客总数是大多数博主都喜欢使用的,虽然有第三方统计工具(如CNZZ、51La...),但如果不想使用第三方工具统计那么可以试试下面这段代码。
网站访客统计
首先在Typecho主题的functions.php
文件中添加以下统计代码。
//总访问量
function theAllViews()
{
$db = Typecho_Db::get();
$row = $db->fetchAll('SELECT SUM(VIEWS) FROM `typecho_contents`');
echo number_format($row[0]['SUM(VIEWS)']);
}
插入调用代码
在需要显示的位置插入调用代码。(如:footer.php
、sidebar.php
等文件)
访客总人数:<?php echo theAllViews();?>
调用成功后即可看到显示效果。
在线人数统计
<?php
//首先你要有读写文件的权限,首次访问可能不显示,一般再次刷新即可
$online_log = "online_data.dat"; //保存在线人数文件online.dat到根目录
$timeout = 30; //30秒内无操作判定为掉线
$entries = file($online_log);
$temp = array();
for ($i=0;$i<count($entries);$i++){
$entry = explode(",",trim($entries[$i]));
if(($entry[0] != getenv('REMOTE_ADDR')) && ($entry[1] > time())) {
array_push($temp,$entry[0].",".$entry[1]."\n"); //取出其他浏览者的信息,并去掉超时访客,保存进$temp
}
}
array_push($temp,getenv('REMOTE_ADDR').",".(time() + ($timeout))."\n"); //更新访客的时间
$online_data = count($temp); //计算在线访客
$entries = implode("",$temp);
//写入文件
$fp = fopen($online_log,"w");
flock($fp,LOCK_EX); //flock() 不能在NFS以及其他的一些网络文件系统中正常工作
fputs($fp,$entries);
flock($fp,LOCK_UN);
fclose($fp);
$count= "在线人数:".$online_data."人";
?>
将以上代码放到要显示文件的最顶部,之后再要显示此统计的地方加上此输出。
然后在文件栏建一个online_data.dat的文件用来记录。
插入调用代码
<?php echo $count?>
这段代码不只适用于Typecho,也适用于WordPress、emlog、zblog等php博客系统,如果你想显示在底部,可以找到footer.php
文件,在相应位置添加调用即可,如果放到别的地方也是同理。
评论