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 相关文章推荐
在WAMP环境下搭建ZendDebugger php调试工具的方法
Jul 18 PHP
用php实现选择排序的解决方法
May 04 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
Jun 24 PHP
php实现可以设置中奖概率的抽奖程序代码分享
Jan 19 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
Apr 08 PHP
php获取百度收录、百度热词及百度快照的方法
Apr 02 PHP
WordPress中获取所使用的模板的页面ID的简单方法
Dec 31 PHP
php curl中gzip的压缩性能测试实例分析
Nov 08 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
Jun 28 PHP
PHP实现二维数组中的查找算法小结
Jun 09 PHP
PHP children()函数讲解
Feb 03 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
Mar 12 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代码
2006/12/06 PHP
PHP中的插件机制原理和实例
2014/07/08 PHP
php上传文件问题汇总
2015/01/30 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
鼠标拖动改变DIV等网页元素的大小的实现方法
2017/07/06 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
2019/06/17 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
Python中不同进制的语法及转换方法分析
2016/07/27 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
解读! Python在人工智能中的作用
2017/11/14 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
详解Python中的type和object
2018/08/15 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
PHP中如何使用Cookie
2015/10/28 面试题
机电一体化专业应届本科生求职信
2013/09/27 职场文书
外语专业毕业生自我评价分享
2013/10/05 职场文书
七匹狼男装广告词
2014/03/21 职场文书
护士个人年度总结范文
2015/02/13 职场文书
服务员岗位职责范本
2015/04/09 职场文书
《春酒》教学反思
2016/02/22 职场文书
MySQL 常见存储引擎的优劣
2021/06/02 MySQL