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的一个完整SMTP类(解决邮件服务器需要验证时的问题)
Oct 09 PHP
php win下Socket方式发邮件类
Aug 21 PHP
php 中文字符入库或显示乱码问题的解决方法
Apr 12 PHP
在PHP中操作Excel实例代码
Apr 29 PHP
php学习之数据类型之间的转换介绍
Jun 09 PHP
PHP的5个安全措施小结
Jul 17 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
Jul 25 PHP
用php来限制每个ip每天浏览页面数量的实现思路
Feb 24 PHP
学习PHP session的传递方式
Jun 15 PHP
PHP获取不了React Native Fecth参数的解决办法
Aug 26 PHP
PHP批量修改文件名称的方法分析
Feb 27 PHP
PHP 文件写入和读取操作实例详解【必看篇】
Nov 04 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 多维数组排序(usort,uasort)
2010/06/30 PHP
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
js控制分页打印、打印分页示例
2014/02/08 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
jQuery实现的表格前端排序功能示例
2017/09/18 jQuery
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
vue-列表下详情的展开与折叠案例
2020/07/28 Javascript
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
详解Python爬虫的基本写法
2016/01/08 Python
Python+django实现文件下载
2016/01/17 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
Python理解递归的方法总结
2019/01/28 Python
python selenium 弹出框处理的实现
2019/02/26 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
详解用Python爬虫获取百度企业信用中企业基本信息
2020/07/02 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
高山背包:High Sierra
2017/11/23 全球购物
应届大学生求职的自我评价
2013/11/17 职场文书
入党自我鉴定
2014/03/25 职场文书
心理健康活动总结
2014/04/30 职场文书
期末评语大全
2014/05/04 职场文书
个人四风问题整改措施
2014/10/24 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers