PHP获取浏览器信息类和客户端地理位置的2个方法


Posted in PHP onApril 24, 2014

一、获取浏览器信息,获取访客操作系统:windows、mac、linux、unix、bsd、other,以及访客ip地址等信息的PHP类

<?php  
/** 
 * 获取访客信息的类:语言、浏览器、操作系统、ip、地理位置、isp。 
 * 使用: 
 *   $obj = new guest_info; 
 *   $obj->getlang();     //获取访客语言:简体中文、繁?中文、english。 
 *   $obj->getbrowser();  //获取访客浏览器:msie、firefox、chrome、safari、opera、other。 
 *   $obj->getos();       //获取访客操作系统:windows、mac、linux、unix、bsd、other。 
 *   $obj->getip();       //获取访客ip地址。 
 *   $obj->getadd();      //获取访客地理位置,使用 baidu 隐藏接口。 
 *   $obj->getisp();      //获取访客isp,使用 baidu 隐藏接口。 
 */  
class guest_info{  
    function getlang() {  
        $lang = substr($_server['http_accept_language'], 0, 4);  
        //使用substr()截取字符串,从 0 位开始,截取4个字符  
        if (preg_match('/zh-c/i',$lang)) {  
        //preg_match()正则表达式匹配函数  
            $lang = '简体中文';  
        }
        elseif (preg_match('/zh/i',$lang)) {  
            $lang = '繁?中文';  
        }  
        else {  
            $lang = 'english';  
        }  
        return $lang;  
    }  
    function getbrowser() {  
        $browser = $_server['http_user_agent'];  
        if (preg_match('/msie/i',$browser)) {  
            $browser = 'msie';  
        }  
        elseif (preg_match('/firefox/i',$browser)) {  
            $browser = 'firefox';  
        }  
        elseif (preg_match('/chrome/i',$browser)) {  
            $browser = 'chrome';  
        }  
        elseif (preg_match('/safari/i',$browser)) {  
            $browser = 'safari';  
        }  
        elseif (preg_match('/opera/i',$browser)) {  
            $browser = 'opera';  
        }  
        else {  
            $browser = 'other';  
        }  
        return $browser;  
    }  
    function getos() {  
        $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;  
    }  
    function getip() {  
        if (!empty($_server['http_client_ip'])) {  
        //如果变量是非空或非零的值,则 empty()返回 false。  
            $ip = explode(',',$_server['http_client_ip']);  
        }  
        elseif (!empty($_server['http_x_forwarded_for'])) {  
            $ip = explode(',',$_server['http_x_forwarded_for']);  
        }  
        elseif (!empty($_server['remote_addr'])) {  
            $ip = explode(',',$_server['remote_addr']);  
        }  
        else {  
            $ip[0] = 'none';  
        }  
        return $ip[0];  
    }      
}  $obj = new guest_info;  
echo    $obj->getlang();  //获取访客语言:简体中文、繁?中文、english。  
echo    $obj->getbrowser(); //获取访客浏览器:msie、firefox、chrome、safari、opera、other。  
echo    $obj->getos();  //获取访客操作系统:windows、mac、linux、unix、bsd、other。  
echo    $obj->getip();  //获取访客ip地址。  
?>

二、php利用腾讯ip分享计划获取ip地理位置

<?php  
function getiploc_qq($queryip){      
  $url = 'http://ip.qq.com/cgi-bin/searchip?searchip1='.$queryip;      
  $ch = curl_init($url);      
  curl_setopt($ch,curlopt_encoding ,'gb2312');    
  curl_setopt($ch, curlopt_timeout, 10);     
  curl_setopt($ch, curlopt_returntransfer, true) ; // 获取数据返回    
  $result = curl_exec($ch);      
  $result = mb_convert_encoding($result, "utf-8", "gb2312"); // 编码转换,否则乱码   
  curl_close($ch);     
  preg_match("@<span>(.*)</span></p>@iu",$result,$iparray);      
  $loc = $iparray[1];      
  return $loc;  
}   
//使用  
echo getiploc_qq("183.37.209.57"); //即可得到ip地址所在的地址位置。     
?>

三、php利用新浪ip查询接口获取ip地理位置

<?php   
function getiploc_sina($queryip){      
   $url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$queryip;      
   $ch = curl_init($url);       
   curl_setopt($ch,curlopt_encoding ,'utf8');       
   curl_setopt($ch, curlopt_timeout, 5);     
   curl_setopt($ch, curlopt_returntransfer, true) ; // 获取数据返回    
   $location = curl_exec($ch);      
   $location = json_decode($location);      
   curl_close($ch);           
   $loc = "";     
   if($location===false) return "";       
      if (empty($location->desc)) {      
      $loc = $location->province.$location->city.$location->district.$location->isp;    
   }else{         $loc = $location->desc;      
   }      
    return $loc;  
}  
echo getiploc_sina("183.37.209.57");  
?>
PHP 相关文章推荐
C# Assembly类访问程序集信息
Jun 13 PHP
解析thinkphp的左右值无限分类
Jun 20 PHP
学习php设计模式 php实现模板方法模式
Dec 08 PHP
yii,CI,yaf框架+smarty模板使用方法
Dec 29 PHP
PHP处理数组和XML之间的互相转换
Jun 02 PHP
利用PHP自动生成印有用户信息的名片
Aug 01 PHP
PHP入门教程之PHP操作MySQL的方法分析
Sep 11 PHP
php 修改上传文件大小限制实例详解
Oct 23 PHP
PHP多维数组指定多字段排序的示例代码
May 16 PHP
php 可变函数使用小结
Jun 12 PHP
PDO::prepare讲解
Jan 29 PHP
PHP容器类的两种实现方式示例
Jul 24 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
Apr 24 #PHP
php计算当前程序执行时间示例
Apr 24 #PHP
php实现的百度搜索某地天气的小偷代码
Apr 23 #PHP
php url路由入门实例
Apr 23 #PHP
通过curl模拟post和get方式提交的表单类
Apr 23 #PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
Apr 23 #PHP
php自定义session示例分享
Apr 22 #PHP
You might like
基于php中使用excel的简单介绍
2013/08/02 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
基于JS+Canves实现点击按钮水波纹效果
2016/09/15 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
js实现二级导航功能
2017/03/03 Javascript
详解在AngularJS的controller外部直接获取$scope
2017/06/02 Javascript
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
2017/09/19 NodeJs
Vue侧滑菜单组件——DrawerLayout
2017/12/18 Javascript
js实现点击按钮复制文本功能
2020/07/20 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
浅谈Python实现Apriori算法介绍
2017/12/20 Python
Python处理中文标点符号大集合
2018/05/14 Python
python基于http下载视频或音频
2018/06/20 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
2020/04/20 Python
Python ini文件常用操作方法解析
2020/04/26 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
广州一家公司的.NET面试题
2016/06/11 面试题
英文版销售经理个人求职信
2013/11/20 职场文书
学习经验演讲稿
2014/05/10 职场文书
2014年标准化工作总结
2014/12/17 职场文书
2015年财政局工作总结
2015/05/21 职场文书
离婚被告代理词
2015/05/23 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
实习报告范文之电话客服岗位
2019/07/26 职场文书
AJAX学习笔记
2021/05/18 Javascript