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 相关文章推荐
php将fileterms函数返回的结果变成可读的形式
Apr 21 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
Aug 06 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
thinkphp数据查询和遍历数组实例
Nov 28 PHP
php生成RSS订阅的方法
Feb 13 PHP
使用XHGui来测试PHP性能的教程
Jul 03 PHP
php获取英文姓名首字母的方法
Jul 13 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
May 31 PHP
PHP多进程编程总结(推荐)
Jul 18 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
Jan 20 PHP
PHP Trait功能与用法实例分析
Jun 03 PHP
php的单例模式及应用场景详解
Feb 27 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
php5.2.0内存管理改进
2007/01/22 PHP
PHP中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
php创建无限级树型菜单
2015/11/05 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
php die()与exit()的区别实例详解
2016/12/03 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
javascript:void(0)使用探讨
2013/08/27 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
利用Vue v-model实现一个自定义的表单组件
2017/04/27 Javascript
nodejs acl的用户权限管理详解
2018/03/14 NodeJs
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
create-react-app修改为多页面支持的方法
2018/05/17 Javascript
JS实现的点击按钮图片上下滚动效果示例
2019/01/28 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
原生JS与CSS实现软件卸载对话框功能
2019/12/05 Javascript
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
python实现提取百度搜索结果的方法
2015/05/19 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
python numpy生成等差数列、等比数列的实例
2020/02/25 Python
Python3 中sorted() 函数的用法
2020/03/24 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
妇产科护士自我鉴定
2013/10/15 职场文书
求职简历中个人的自我评价
2013/12/25 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android