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 相关文章推荐
打造计数器DIY三步曲(中)
Oct 09 PHP
深入了解php4(2)--重访过去
Oct 09 PHP
php下实现一个阿拉伯数字转中文数字的函数
Jul 10 PHP
深入php self与$this的详解
Jun 08 PHP
数组与类使用PHP的可变变量名需要的注意的问题
Jun 20 PHP
关于php循环跳出的问题
Jul 01 PHP
php中session退出登陆问题
Feb 27 PHP
教大家制作简单的php日历
Nov 17 PHP
php判断用户是否关注微信公众号
Jul 22 PHP
Yii2下session跨域名共存的解决方案
Feb 04 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
Apr 20 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
Mar 18 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_SELF的安全问题
2009/09/05 PHP
php HandlerSocket的使用
2011/05/02 PHP
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
jquery自定义右键菜单、全选、不连续选择
2016/03/01 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
JavaScript之数组扁平化详解
2019/06/03 Javascript
[16:01]夜魇凡尔赛茶话会 第二期01:你比划我猜
2021/03/11 DOTA
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
Python使用剪切板的方法
2017/06/06 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
2019/08/27 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
django中ImageField的使用详解
2020/12/21 Python
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
工程地质勘察专业大学生求职信
2013/10/13 职场文书
安全大检查反思材料
2014/01/31 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
《理想》教学反思
2014/02/17 职场文书
微信营销策划方案
2014/02/24 职场文书
行政专员岗位职责说明书
2014/07/30 职场文书
师范生见习报告范文
2014/11/03 职场文书
董事会决议范本
2015/07/01 职场文书
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python