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 相关文章推荐
解决MySQL中文输出变成问号的问题
Jun 05 PHP
php include加载文件两种方式效率比较
Aug 08 PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 PHP
php中用socket模拟http中post或者get提交数据的示例代码
Aug 08 PHP
PHP+MYSQL会员系统的开发实例教程
Aug 23 PHP
PHP实现数组递归转义的方法
Aug 28 PHP
php实现汉字验证码和算式验证码的方法
Mar 07 PHP
php返回字符串中所有单词的方法
Mar 09 PHP
微信支付开发交易通知实例
Jul 12 PHP
PHP三种方式实现链式操作详解
Jan 21 PHP
php接口实现拖拽排序功能
Apr 23 PHP
PHP bin2hex()函数基础实例讲解
Feb 11 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
探讨file_get_contents与curl效率及稳定性的分析
2013/06/06 PHP
PHP批量生成静态HTML的简单原理和方法
2014/04/20 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
2014/06/19 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
ExtJS GTGrid 简单用户管理
2009/07/01 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
用按钮控制iframe显示的网页实现方法
2013/02/04 Javascript
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
Jquery方式获取iframe页面中的 Dom元素
2014/05/07 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
JQuery球队选择实例
2015/05/18 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
莱鸟介绍javascript onclick事件
2016/01/06 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
vue 中自定义指令改变data中的值
2017/06/02 Javascript
Vue.js上下滚动加载组件的实例代码
2017/07/17 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
vue-router之nuxt动态路由设置的两种方法小结
2018/09/26 Javascript
vue与bootstrap实现简单用户信息添加删除功能
2019/02/15 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
2020/04/21 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
用Python脚本来删除指定容量以上的文件的教程
2015/05/04 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
CLR与IL分别是什么含义
2016/08/23 面试题
采购部主管岗位职责
2014/01/01 职场文书
会计人员岗位职责
2015/02/03 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js
详解Python中*args和**kwargs的使用
2022/04/07 Python