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编程之高级技巧——利用Mysql函数
Oct 09 PHP
深入解析Session是否必须依赖Cookie
Aug 02 PHP
PHP常用编译参数中文说明
Sep 27 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
php针对cookie操作的队列操作类实例
Dec 10 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
Dec 19 PHP
PHP实现支持SSL连接的SMTP邮件发送类
Mar 05 PHP
PHP实现即时输出、实时输出内容方法
May 27 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
Nov 20 PHP
PHP获取数组中指定的一列实例
Dec 27 PHP
php引用传递
Apr 01 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 Undefined index的问题
2009/06/01 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
javascript中encodeURI和decodeURI方法使用介绍
2013/05/06 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
webpack配置之后端渲染详解
2017/10/26 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
Python 文件操作实现代码
2009/10/07 Python
python 实现插入排序算法
2012/06/05 Python
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
python虚拟环境virualenv的安装与使用
2016/12/18 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
python读写配置文件操作示例
2019/07/03 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
基于python实现模拟数据结构模型
2020/06/12 Python
Pytorch 卷积中的 Input Shape用法
2020/06/29 Python
python pandas dataframe 去重函数的具体使用
2020/07/20 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
优秀大学生的自我评价
2014/01/16 职场文书
如何撰写岗位职责
2014/02/01 职场文书
市场部管理制度
2014/02/02 职场文书
《争吵》教学反思
2014/02/15 职场文书
电脑售后服务承诺书
2014/03/27 职场文书
教师工作失职检讨书
2014/09/18 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
2015年清明节活动总结
2015/02/09 职场文书
五一劳动节慰问信
2015/02/14 职场文书
2015年中秋寄语
2015/07/31 职场文书