下载鸥 > 网站下载 > 开发教程 > 帝国CMS

帝国cms会员空间怎样做最近访客功能

571 2020-12-01 12:57:56

收藏

简述

按下方教程操作即可实现记录登录信息或ip的功能。

本功能实现了如果用户登陆了, 就记录他的信息 如果未登陆就记录他的IP地区作为信息..

第一步: 先创建数据表 在后台执行语句

注意: _userkjf 前面要加上您的表前缀哦...

CREATE TABLE `phome_userkjf` (

`id` int(11) NOT NULL auto_increment,

  `lfuserid` varchar(20) character set gbk default NULL,

  `bfuserid` varchar(100) character set gbk NOT NULL,

  `ip` char(50) character set gbk default NULL,

  `ipdl` char(50) character set gbk default NULL,

  `lftime` char(20) character set gbk NOT NULL,

  PRIMARY KEY  (`id`),

  UNIQUE KEY `id` (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=latin1 AUTO_INCREMENT=65 ;


第二步: 把以下代码 复制到如下目录 
 

​​​​​​​/e/space/template/default/header.temp.php

代码如下:
 

<?php
//取得登陆者信息
$userid =getcvar('mluserid');    //会员ID  
$uid=$_GET['userid'];//当前空间的主人ID
     
if ($uid!=$userid)
{
  //如果访客已登陆  则取得访客信息并写入数据库
  if($userid)
  {        
          $lfUname = $_COOKIE["lfUname"];//获取访客信息
     
$fkdd=$empire->fetch1("select * from {$dbtbpre}userkjf where  bfuserid='".$uid."' and lfuserid='".$userid."'");
       
       
   if($fkdd)
          {
 
          }
 
  else
       
  {
     
$empire->query("insert into {$dbtbpre}userkjf(lfuserid,bfuserid,lftime) values($userid,$uid,'".date('Y-m-dH:i:s')."')");
    
  }
 
  }
  else//如果访客未登陆  则取得访客信息并写入数据库
  {
          //取得IP 和地区
           $gifo = new get_gust_info();
           $ip=$gifo->Getip();
           $ipadds = $gifo->Getaddress();
           foreach($ipadds[0] as $value){
                   $ipdl.=iconv("utf-8","gbk",$value);   
           }
               
          //获取访客信息
          $lfUname = $_COOKIE["lfUname"];
               
          if($lfUname=='')
          {
          $empire->query("insert into {$dbtbpre}userkjf(bfuserid,ip,ipdl,lftime) values($uid,'$ip','".$ipdl."','".date('Y-m-d
     
H:i:s')."')");
                  setcookie("lfUname","游客",time()+1200);   //创建来访客信息  20分钟过期
          }
  }
}
?>
<?php
// 作用取得客户端的ip、地理信息、浏览器、本地真实IP
class get_gust_info {
     
  ////获得访客真实ip
  function Getip(){
   if(!empty($_SERVER["HTTP_CLIENT_IP"])){   
      $ip = $_SERVER["HTTP_CLIENT_IP"];
   }
   if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ //获取代理ip
    $ips = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
   }
   if($ip){
      $ips = array_unshift($ips,$ip);
   }
        
   $count = count($ips);
   for($i=0;$i<$count;$i++){   
     if(!preg_match("/^(10|172.16|192.168)./i",$ips[$i])){//排除局域网ip
      $ip = $ips[$i];
      break;   
      }  
   }  
   $tip = empty($_SERVER['REMOTE_ADDR']) ? $ip : $_SERVER['REMOTE_ADDR'];
   if($tip=="127.0.0.1"){ //获得本地真实IP
      return $this->get_onlineip();   
   }else{
      return $tip;
   }
  }
       
  ////获得本地真实IP
  function get_onlineip() {
      $mip = file_get_contents("http://city.ip138.com/city0.asp");
       if($mip){
           preg_match("/[.*]/",$mip,$sip);
           $p = array("/[/","/]/");
           return preg_replace($p,"",$sip[0]);
       }else{return "获取本地IP失败!";}
   }
       
  ////根据ip获得访客所在地地名
  function Getaddress($ip=''){
   if(empty($ip)){
       $ip = $this->Getip();   
   }
   $ipadd = file_get_contents("http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=".$ip);//根据新浪api接口获取
   if($ipadd){
    $charset = iconv("gbk","utf-8",$ipadd);   
    preg_match_all("/[x{4e00}-x{9fa5}]+/u",$charset,$ipadds);
        
    return $ipadds;   //返回一个二维数组
   }else{return "addree is none";}  
  }
}
     
?>
     
<?php
//-会员空间访客显示开始-----------------
$fkSQL="select * from {$dbtbpre}userkjf where bfuserid='".$uid."' order by id desc limit 5";
$fkSQL=$empire->query($fkSQL);
     
while($rs=$empire->fetch($fkSQL))
{
     
        if($rs[lfuserid])
        {
                $fkxxrs=$empire->fetch1("select userid,truename,userpic from {$dbtbpre}enewsmemberadd where userid=$rs[lfuserid] limit
     
2");
?>
     
     
     
<li>
<a href="/e/space/index.php?userid=<?=$fkxxrs[userid]?>"><img src="<?=$fkxxrs[userpic]?$fkxxrs[userpic]:'/templets/member/common/images/dfboy.png'?>"   alt="<?=$fkxxrs[truename]?>" /></a>
<a href="/e/space/index.php?userid=<?=$fkxxrs[userid]?>"><?=$fkxxrs[truename]?></a>
</li>
     
     
     
     
     
<?php       
        }
        else
        {
?>
                        <li>
                            <a href="#"><img src="../data/images/nouserpic.gif"   /></a>
                        <span>
                                <div><?=$rs[ipdl]?"来自:".$rs[ipdl]:"未知地区"?></div>
                            <br>
                            <div><?=$rs[lftime]?></div>
                        </span>
                    </li>
<?php
        }
     
}
//-会员空间访客显示结束--------------       
?>

至此,帝国cms会员空间记录访客信息就全部实现了。

本文地址:https://xzo.com.cn/develop/empire/189.html

有帮助,很赞!

信息来源:精准像素
导出教程 下载word版教程
发表评论 共有条评论
关于帝国CMS


帝国cms是一款功能极为强大的cms程序,性能强悍、安全性高,可轻松支持10万数据,高级开发人员可制作出能容纳千万数据量的网站,是国内最出色的开源cms程序之一,推荐企业用户使用

当前最新版本为7.5,8.0版本即将上线,新版本的核心优化点在于多终端的适配。

推荐帝国CMS开发教程
帝国cms列表页怎样置顶?
帝国cms列表页怎样置顶?

在很多时候,我们有信息置顶的需求。但大家在后台信息设置好置顶后可能会发现...

11 727
帝国CMS怎样让一条信息具有多个模板?
帝国CMS怎样让一条信息具有多个模板?

帝国CMS的信息是绑定内容模板的,通过本教程可以实现在前台自由使用不同的模...

17 475
帝国CMS开发的网站怎样修改网站标题关键词和描述?
帝国CMS开发的网站怎样修改网站标题关键词和描述?

在网站运营的过程中,由于业务的变更或是优化的需要,可能需要修改网站的标题,关...

1 373
帝国cms下载判断设备环境安卓苹果并适配下载地址
帝国cms下载判断设备环境安卓苹果并适配下载地址

帝国cms静态站下载判断设备环境是安卓还是苹果,并自动适配下载地址,如果当前...

1 349
帝国cms没有标题图时怎样调用随机图片做缩略图?
帝国cms没有标题图时怎样调用随机图片做缩略图?

如果调用同一张图片,在大量图片缺失的情况下又十分难看。所以今天,鸥哥给大家...

1 361
帝国cms后台DoTimeRepage.php一直刷新写满日志了怎么办?
帝国cms后台DoTimeRepage.php一直刷新写满日志了怎么办?

如果平时喜欢挂着帝国cms网站后台不关闭,又留心了网站日志的朋友就会发现DoT...

1 476
帝国cms网站怎样判断是动态、静态还是伪静态?
帝国cms网站怎样判断是动态、静态还是伪静态?

对于资深一点的站长或者SEO来说,一定会经常听到动态、静态、伪静态这类的词...

0 415
填坑笔记:帝国cms栏目部分页面无法访问的原因与解决办法
填坑笔记:帝国cms栏目部分页面无法访问的原因与解决办法

在网站开发的过程中,我们可能因为这样那样的问题遇到无数的出错。有可能是代...

0 312
随机帝国CMS开发教程
怎么去掉帝国CMS自动缩略图出现黑边框背景
怎么去掉帝国CMS自动缩略图出现黑边框背景

近期优化网站解决的的问题,帝国CMS自动缩略图会出现黑边框背景,很丑。看了GD...

0 291
帝国CMS会员中心如何动态提示未读消息
帝国CMS会员中心如何动态提示未读消息

会员中心显示动态消息是需要开发会员中心用户的基本诉求。那么,帝国cms怎样...

1 574
帝国cms留言板如何设置联系电话为必填项
帝国cms留言板如何设置联系电话为必填项

帝国cms网站留言板默认设置的必填项为姓名、邮箱、留言内容,但是联系方式却...

7 472
帝国cms二次开发用户投稿支持自定义添加tag标签
帝国cms二次开发用户投稿支持自定义添加tag标签

对于高度定制化的帝国cms用户而言,支持投稿添加tag的功能更利于seo优化。那...

10 278
利用灵动标签调用下一篇信息标题+简介+发布者信息
利用灵动标签调用下一篇信息标题+简介+发布者信息

帝国CMS默认的上一篇,下一篇调用标签为:上一篇&#091;!--info.pre--],下一篇&#0...

14 465
帝国CMS会员注册激活后发送欢迎邮件
帝国CMS会员注册激活后发送欢迎邮件

看到有人需要会员注册激活后发送欢迎邮件,本人研究数日,终于成功,本人小白一个...

1 522
帝国CMS7.5默认编辑器添加代码高亮
帝国CMS7.5默认编辑器添加代码高亮

帝国CMS7.5默认编辑器添加代码高亮...

0 474
帝国CMS二次开发静态页面生成为压缩代码
帝国CMS二次开发静态页面生成为压缩代码

帝国CMS二次开发静态页面生成为压缩代码功能怎么做呢?其实非常简单,源码如下:...

0 399
客服QQ:341553759
点击咨询 常见问题 >
官方交流群:90432500
点击加入