食用方法
首先在主题文件里的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
<?php echo online_users() ?>
在主题文件functions.php(Joe主题放在core/core.php文件)最下面放入以下代码:
//调用博主最近登录时间
function get_last_login($user){
$user = '1';
$now = time();
$db = Typecho_Db::get();
$prefix = $db->getPrefix();
$row = $db->fetchRow($db->select('activated')->from('table.users')->where('uid = ?', $user));
echo Typecho_I18n::dateWord($row['activated'], $now);
}
然后在想要显示的位置调用以下代码:
调用语句示例:博主 <?php get_last_login(1); ?>
在线
就这么简单!
附加
再配合typecho实时在线人数统计代码相结合。将下列代码放入需要显示的地方,如本博客放在页脚文件foot.php。
<div class="tooltip">当前有<?php echo online_users() ?>人访问本站<span class="tooltiptext">博主 <?php get_last_login(1); ?> 在线</span></div>
美化
提示内容美化,将下列代码放在主题的CSS文件里(Joe主题放在assets/css/joe.min.css)
.tooltip {
position: relative;
display: inline-block;
margin: 0 0 0 20px;;
}
.tooltip .tooltiptext {
visibility: hidden;
width: 100%;
background-color: black;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px;
/* 定位 */
position: absolute;
z-index: 1;
}
.tooltip:hover .tooltiptext {
visibility: visible;
}
Comments | NOTHING
该文章已经关闭评论