取得客户端的IP、地理信息、浏览器信息

<?php
 // 作用取得客户端的ip、地理信息、浏览器
 class get_gust_info {
          
  ////获得访客浏览器类型
  function GetBrowser(){
   if(!empty($_SERVER['HTTP_USER_AGENT'])){
    $br = $_SERVER['HTTP_USER_AGENT'];
    if (preg_match('/MSIE/i',$br)) { 
               $br = 'MSIE';
             }elseif (preg_match('/Firefox/i',$br)) {
     $br = 'Firefox';
    }elseif (preg_match('/Chrome/i',$br)) {
     $br = 'Chrome';
       }elseif (preg_match('/Safari/i',$br)) {
     $br = 'Safari';
    }elseif (preg_match('/Opera/i',$br)) {
        $br = 'Opera';
    }else {
        $br = 'Other';
    }
    return $br;
   }else{return "获取浏览器信息失败!";}
  }
          
  ////获得访客浏览器语言
  function GetLang(){
   if(!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
    $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    $lang = substr($lang,0,5);
    if(preg_match("/zh-cn/i",$lang)){
     $lang = "简体中文";
    }elseif(preg_match("/zh/i",$lang)){
     $lang = "繁体中文";
    }else{
        $lang = "English";
    }
    return $lang;
            
   }else{return "获取浏览器语言失败!";}
  }
          
   ////获取访客操作系统
  function GetOs(){
   if(!empty($_SERVER['HTTP_USER_AGENT'])){
    $OS = $_SERVER['HTTP_USER_AGENT'];
      if (preg_match('/win/i',$OS)) {
     $OS = 'Windows';
    }elseif (preg_match('/mac/i',$OS)) {
     $OS = 'MAC';
    }elseif (preg_match('/linux/i',$OS)) {
     $OS = 'Linux';
    }elseif (preg_match('/unix/i',$OS)) {
     $OS = 'Unix';
    }elseif (preg_match('/bsd/i',$OS)) {
     $OS = 'BSD';
    }else {
     $OS = 'Other';
    }
          return $OS;
   }else{return "获取访客操作系统信息失败!";}
  }
          
  ////获得访客真实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 GetClientIP()
{
    static $realip;
    if (isset($_SERVER)){
        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
            $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        } else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
            $realip = $_SERVER["HTTP_CLIENT_IP"];
        } else {
            $realip = $_SERVER["REMOTE_ADDR"];
        }
    } else {
        if (getenv("HTTP_X_FORWARDED_FOR")){
            $realip = getenv("HTTP_X_FORWARDED_FOR");
        } else if (getenv("HTTP_CLIENT_IP")) {
            $realip = getenv("HTTP_CLIENT_IP");
        } else {
            $realip = getenv("REMOTE_ADDR");
        }
    }
    return $realip;
}
/**
 * 获取 IP  地理位置
 * 淘宝IP接口
 * @Return: array
 */
function getCity($ip)
{
  if(empty($ip)){
       $ip = $this->GetClientIP(); 
   }
  $url="http://ip.taobao.com/service/getIpInfo.php?ip=".$ip;
  $ip=json_decode(file_get_contents($url));
  if((string)$ip->code=='1'){
     return false;
  }
  $data = (array)$ip->data;
  return $data;
}
  ////获得本地真实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->GetClientIP(); 
   }
   $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 "address is none";}
  }
 }
 $gifo = new get_gust_info();
 $ipadds = $gifo->Getaddress();
 $location;
 $arr = $gifo->getCity($gifo->GetClientIP());
  foreach ($arr as $key => $val) {
       if($key == "country" || $key == "region" || $key == "city")
       {
        $location = $location.$val;
       }
  }
  try
  {
    $conn = new PDO('数据库文件路径');
    $sql = 'SQL语句';
    $query = $conn->exec($sql);
    if(!$query){
      echo '错误信息:'.$db->errorCode();
      echo '错误代码:'.$db->lastErrorCode();
    }else{
      echo '受影响行数:'.$db->changes();
    }
    $conn = null;
  }
  catch(PDOException $e)
  {
    echo '============='.$e->getMessage();
  }
 ?>


知识共享许可协议
《取得客户端的IP、地理信息、浏览器信息》常伟华 创作。
采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可。
  • 多说评论
  • 签名
  • 新浪微博
  • 默认评论
  • Tab Header 5

5 条评论 / 点击此处发表评论

Tab Content 5

开发技术


开发平台和工具

sitemap     178.88ms