PHP获取访问设备信息的方法示例


Posted in PHP onFebruary 20, 2019

本文实例讲述了PHP获取访问设备信息的方法。分享给大家供大家参考,具体如下:

<?php
header("Content:Content-type:text/html;charset=utf-8");
//   // 作用取得客户端的ip、地理位置、浏览器、以及访问设备
   class get_equipment_info{
   ////获得访客浏览器类型
   function GetBrowser(){
    if(!empty($_SERVER['HTTP_USER_AGENT']))
    {
     $br = $_SERVER['HTTP_USER_AGENT'];
     if (preg_match('/MSIE/i',$br)){
       $br = 'MSIE';
     }
     elseif (preg_match('/Firefox/i',$br)){
       $br = 'Firefox';
     }elseif (preg_match('/Chrome/i',$br)){
       $br = 'Chrome';
     }elseif (preg_match('/Safari/i',$br)){
       $br = 'Safari';
     }elseif (preg_match('/Opera/i',$br)){
       $br = 'Opera';
     }else {
       $br = 'Other';
     }
       return json_encode("浏览器为".$br);
     }else{
       return "获取浏览器信息失败!";}
   }
   ////获得访客浏览器语言
   function GetLang()
   {
      if(!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
        $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
        $lang = substr($lang,0,5);
        if(preg_match("/zh-cn/i",$lang)){
          $lang = "简体中文";
        }elseif(preg_match("/zh/i",$lang)){
          $lang = "繁体中文";
        }else{
          $lang = "English";
        }
        return json_encode("浏览器语言为".$lang);
      }else{
      return "获取浏览器语言失败!";
      }
   }
   //获取客户端操作系统信息包括win10
  function GetOs(){
    $agent = $_SERVER['HTTP_USER_AGENT'];
    $os = false;
    if (preg_match('/win/i', $agent) && strpos($agent, '95'))
    {
      $os = 'Windows 95';
    }
    else if (preg_match('/win 9x/i', $agent) && strpos($agent, '4.90'))
    {
      $os = 'Windows ME';
    }
    else if (preg_match('/win/i', $agent) && preg_match('/98/i', $agent))
    {
      $os = 'Windows 98';
    }
    else if (preg_match('/win/i', $agent) && preg_match('/nt 6.0/i', $agent))
    {
      $os = 'Windows Vista';
    }
    else if (preg_match('/win/i', $agent) && preg_match('/nt 6.1/i', $agent))
    {
      $os = 'Windows 7';
    }
    else if (preg_match('/win/i', $agent) && preg_match('/nt 6.2/i', $agent))
    {
      $os = 'Windows 8';
    }else if(preg_match('/win/i', $agent) && preg_match('/nt 10.0/i', $agent))
    {
      $os = 'Windows 10';#添加win10判断
    }else if (preg_match('/win/i', $agent) && preg_match('/nt 5.1/i', $agent))
    {
      $os = 'Windows XP';
    }
    else if (preg_match('/win/i', $agent) && preg_match('/nt 5/i', $agent))
    {
      $os = 'Windows 2000';
    }
    else if (preg_match('/win/i', $agent) && preg_match('/nt/i', $agent))
    {
      $os = 'Windows NT';
    }
    else if (preg_match('/win/i', $agent) && preg_match('/32/i', $agent))
    {
      $os = 'Windows 32';
    }
    else if (preg_match('/linux/i', $agent))
    {
      $os = 'Linux';
    }
    else if (preg_match('/unix/i', $agent))
    {
      $os = 'Unix';
    }
    else if (preg_match('/sun/i', $agent) && preg_match('/os/i', $agent))
    {
      $os = 'SunOS';
    }
    else if (preg_match('/ibm/i', $agent) && preg_match('/os/i', $agent))
    {
      $os = 'IBM OS/2';
    }
    else if (preg_match('/Mac/i', $agent) && preg_match('/PC/i', $agent))
    {
      $os = 'Macintosh';
    }
    else if (preg_match('/PowerPC/i', $agent))
    {
      $os = 'PowerPC';
    }
    else if (preg_match('/AIX/i', $agent))
    {
      $os = 'AIX';
    }
    else if (preg_match('/HPUX/i', $agent))
    {
      $os = 'HPUX';
    }
    else if (preg_match('/NetBSD/i', $agent))
    {
      $os = 'NetBSD';
    }
    else if (preg_match('/BSD/i', $agent))
    {
      $os = 'BSD';
    }
    else if (preg_match('/OSF1/i', $agent))
    {
      $os = 'OSF1';
    }
    else if (preg_match('/IRIX/i', $agent))
    {
      $os = 'IRIX';
    }
    else if (preg_match('/FreeBSD/i', $agent))
    {
      $os = 'FreeBSD';
    }
    else if (preg_match('/teleport/i', $agent))
    {
      $os = 'teleport';
    }
    else if (preg_match('/flashget/i', $agent))
    {
      $os = 'flashget';
    }
    else if (preg_match('/webzip/i', $agent))
    {
      $os = 'webzip';
    }
    else if (preg_match('/offline/i', $agent))
    {
      $os = 'offline';
    }
    else
    {
      $os = '未知操作系统';
    }
    return json_encode("系统为".$os);
  }
  //获得访客真实ip
   function Getip()
  {
    if (! empty($_SERVER["HTTP_CLIENT_IP"])) {
      $ip = $_SERVER["HTTP_CLIENT_IP"];
    }
    if (! empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { // 获取代理ip
      $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
    }
    if ($ip) {
      $ips = array_unshift($ips, $ip);
    }
    $count = count($ips);
    for ($i = 0; $i < $count; $i ++) {
      if (! preg_match("/^(10|172\.16|192\.168)\./i", $ips[$i])) { // 排除局域网ip
        $ip = $ips[$i];
        break;
      }
    }
    $tip = empty($_SERVER['REMOTE_ADDR']) ? $ip : $_SERVER['REMOTE_ADDR'];
    if ($tip == "127.0.0.1") { // 获得本地真实IP
      return $this->get_onlineip();
    } else {
      return $tip;
    }
  }
   // //根据ip获得访客所在地地名
  function Getaddress($ip = '')
  {
    if (empty($ip)) {
      $ip = $this->Getip();
    }
    $ipadd = file_get_contents("http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=" . $ip); // 根据新浪api接口获取
    if ($ipadd) {
      $charset = iconv("gbk", "utf-8", $ipadd);
      preg_match_all("/[\x{4e00}-\x{9fa5}]+/u", $charset, $ipadds);
      return $ipadds; // 返回一个二维数组
    } else {
      return "addree is none";
    }
  }
  //获得本地真实IP
  // function get_onlineip()
  // {
  //   $mip = file_get_contents("http://city.ip138.com/city0.asp");
  //   if ($mip) {
  //     preg_match("/\[.*\]/", $mip, $sip);
  //     $p = array(
  //       "/\[/",
  //       "/\]/"
  //     );
  //     return preg_replace($p, "", $sip[0]);
  //   } else {
  //     return "获取本地IP失败!";
  //   }
  // }
}
 // $info = new get_equipment_info();
 //   echo json_decode($info -> GetLang());
 //   echo json_decode($info -> GetOs());
 //   echo json_decode($info -> GetBrowser());
 //   print_r($info -> Getaddress());
 //   echo $info -> Getip();
 //   echo $info -> get_onlineip();
 //   die;
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP+java实现自动新闻滚动窗口
Oct 09 PHP
如何利用PHP执行.SQL文件
Jul 05 PHP
解决php接收shell返回的结果中文乱码问题
Jan 23 PHP
php实现检查文章是否被百度收录
Jan 27 PHP
Linux系统下php获得系统分区信息的方法
Mar 30 PHP
php生成curl命令行的方法
Dec 14 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
Mar 14 PHP
php打乱数组二维数组多维数组的简单实例
Jun 17 PHP
PHP从数组中删除元素的四种方法实例
May 12 PHP
Yii框架引入coreseek分页功能示例
Feb 08 PHP
php桥接模式应用案例分析
Oct 23 PHP
PHPUnit + Laravel单元测试常用技能
Nov 06 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
Feb 20 #PHP
PHP调用全国天气预报数据接口查询天气示例
Feb 20 #PHP
Laravel框架FormRequest中重写错误处理的方法
Feb 18 #PHP
php原生数据库分页的代码实例
Feb 18 #PHP
PHP实现文字写入图片功能
Feb 18 #PHP
php分享朋友圈的实现代码
Feb 18 #PHP
php微信分享到朋友圈、QQ、朋友、微博
Feb 18 #PHP
You might like
php性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
体育彩票排列三组选三算法分享
2014/03/07 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
JavaScript prototype属性使用说明
2010/05/13 Javascript
jQuery中setTimeout的几种使用方法小结
2013/04/07 Javascript
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
jQuery toggleClass应用实例(附效果图)
2014/04/06 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
vue.js项目中实用的小技巧汇总
2017/11/29 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
手把手教你写一个微信小程序(推荐)
2018/10/17 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python操作MySQL数据库9个实用实例
2015/12/11 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
Python super()方法原理详解
2020/03/31 Python
详解CSS3 用border写 空心三角箭头 (两种写法)
2017/09/29 HTML / CSS
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
毕业生找工作的自我评价
2013/10/18 职场文书
测绘工程个人的自我评价
2013/11/10 职场文书
实习生自荐信范文分享
2013/11/27 职场文书
诚信考试承诺书
2014/03/27 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
2014年学校法制宣传日活动总结
2014/11/01 职场文书
2014年营业员工作总结
2014/11/18 职场文书
初中教师个人工作总结
2015/02/10 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
奥巴马开学演讲观后感
2015/06/12 职场文书
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫