卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章1829本站已运行4109

帝国cms会员空间增加最近访客功能

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

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

特别注意: _userkjf  前面要加之您的表中后缀哦...  

CREATE TABLE `这里就是你的数据库表中后缀_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);//根据新浪apiUSB获取
   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");
?>
    
    
    
  • ">"   alt="<?=$fkxxrs[truename]?>" /> "><?=$fkxxrs[truename]?>
  •                          <?php                }         else         { ?>                         
  •                                                                                       
    <?=$rs[ipdl]?"来自:".$rs[ipdl]:"未知地区"?>
                                
                                
    <?=$rs[lftime]?>
                            
                        
  • <?php         }      } //-会员空间参观者显示结束--------------        ?>

    至此全部安装完成

    卓越飞翔博客
    上一篇: 怎么去掉帝国CMS自动缩略图出现黑边框背景
    下一篇: 二次开发统计专题信息数量帝国CMS教程
    留言与评论(共有 0 条评论)
       
    验证码:
    隐藏边栏