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与javascript对多项选择的处理
Oct 09 PHP
在PHP3中实现SESSION的功能(三)
Oct 09 PHP
php面向对象全攻略 (一) 面向对象基础知识
Sep 30 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
Dec 18 PHP
php判断输入不超过mysql的varchar字段的长度范围
Jun 24 PHP
ThinkPHP 防止表单重复提交的方法
Aug 08 PHP
PHP 伪静态技术原理以及突破原理实现介绍
Jul 12 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
Jan 19 PHP
CI框架验证码CAPTCHA辅助函数用法实例
Nov 05 PHP
PHP-FPM运行状态的实时查看及监控详解
Nov 18 PHP
Zend Framework实现自定义过滤器的方法
Dec 09 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 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对象Object的概念 介绍
2012/06/14 PHP
MyEclipse常用配置图文教程
2014/09/11 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
php xhprof使用实例详解
2019/04/15 PHP
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
jquery中的事件处理详细介绍
2013/06/24 Javascript
三种动态加载js的jquery实例代码另附去除js方法
2014/04/30 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
JavaScript中var关键字的使用详解
2015/08/14 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
2016/06/08 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
vue使用showdown并实现代码区域高亮的示例代码
2019/10/17 Javascript
vue自定义标签和单页面多路由的实现代码
2020/05/03 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
vue 在单页面应用里使用二级套嵌路由
2020/12/19 Vue.js
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
python3使用flask编写注册post接口的方法
2018/12/28 Python
详解python中init方法和随机数方法
2019/03/13 Python
python生成大写32位uuid代码
2020/03/03 Python
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
.NET常见笔试题集
2012/12/01 面试题
开会迟到检讨书
2014/01/08 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
优秀毕业生自荐信
2014/06/10 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
入党后的感想
2015/08/10 职场文书
python实现手机推送 代码也就10行左右
2022/04/12 Python