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 adodb介绍
Mar 19 PHP
Apache 配置详解(最好的APACHE配置教程)
Jul 04 PHP
php中通过Ajax如何实现异步文件上传的代码实例
May 07 PHP
php 带逗号千位符数字的处理方法
Jan 10 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
Jun 17 PHP
服务器变量 $_SERVER 的深入解析
Jul 02 PHP
一个基于phpQuery的php通用采集类分享
Apr 09 PHP
PHP按行读取、处理较大CSV文件的代码实例
Apr 09 PHP
ThinkPHP实例化模型的四种方法概述
Aug 22 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
Jul 09 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
PHP快速排序算法实现的原理及代码详解
Apr 03 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邮件发送,php发送邮件的类
2011/03/24 PHP
PHP安全配置详细说明
2011/09/26 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
php微信开发之自定义菜单实现
2016/11/18 PHP
php插入mysql数据返回id的方法
2018/05/31 PHP
js查错流程归纳
2012/05/04 Javascript
EasyUI实现二级页面的内容勾选的方法
2015/03/01 Javascript
jquery实现用户信息修改验证输入方法汇总
2015/07/18 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
AngularJS ui-router刷新子页面路由的方法
2018/07/23 Javascript
JavaScript单线程和任务队列原理解析
2020/02/04 Javascript
JavaScript实现烟花绽放动画效果
2020/08/04 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
Python中的魔法方法深入理解
2014/07/09 Python
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
Python 如何对文件目录操作
2020/07/10 Python
Python3如何使用tabulate打印数据
2020/09/25 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
澳大利亚工具仓库:Tools Warehouse
2018/10/15 全球购物
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
Java程序员面试90题
2013/10/19 面试题
关于清明节的演讲稿
2014/09/13 职场文书
学生考试舞弊检讨书
2015/01/01 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书
用php如何解决大文件分片上传问题
2021/07/07 PHP
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python