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_odbc和php写的serach数据库程序
Oct 09 PHP
php对称加密算法示例
May 07 PHP
PHP实现取得HTTP请求的原文
Aug 18 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
Nov 22 PHP
php在apache环境下实现gzip配置方法
Apr 02 PHP
PHP实现操作redis的封装类完整实例
Nov 14 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
Mar 25 PHP
PHP查询附近的人及其距离的实现方法
May 11 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
Oct 17 PHP
php 浮点数比较方法详解
May 05 PHP
解决laravel 5.1报错:No supported encrypter found的办法
Jun 07 PHP
goto语法在PHP中的使用教程
Sep 17 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/10/09 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
jquery中$each()方法的使用指南
2015/04/30 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
原生js实现放大镜
2017/02/20 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
JavaScript如何一次性展示几万条数据
2017/03/30 Javascript
easyui-datagrid开发实践(总结)
2017/08/02 Javascript
js操作二进制数据方法
2018/03/03 Javascript
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
解读python如何实现决策树算法
2018/10/11 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
Python基于Dlib的人脸识别系统的实现
2020/02/26 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
类和结构的区别
2012/08/15 面试题
求职简历中的自我评价分享
2013/12/08 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
党的群众路线教育实践活动总结报告
2014/07/03 职场文书
小学捐书活动总结
2014/07/05 职场文书
演讲稿开场白台词
2014/08/25 职场文书
党员四风问题对照检查材料思想汇报
2014/09/16 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
倡议书的格式写法
2015/04/28 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
新生开学寄语大全
2015/05/28 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书