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中插入当前时间
Apr 06 PHP
php 大数据量及海量数据处理算法总结
May 07 PHP
PHP二维数组的去重问题解析
Jul 17 PHP
深入探究PHP的多进程编程方法
Aug 18 PHP
Yii中Model(模型)的创建及使用方法
Dec 28 PHP
一个简单的php MVC留言本实例代码(必看篇)
Sep 22 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
Mar 31 PHP
php判断电子邮件是否正确方法
Dec 04 PHP
PHP的curl函数的用法总结
Feb 14 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
Jan 22 PHP
一文搞懂php的垃圾回收机制
Jun 18 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
一个程序下载的管理程序(三)
2006/10/09 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
php画图实例
2014/11/05 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
用prototype实现的简单小巧的多级联动菜单
2007/03/24 Javascript
jquery中event对象属性与方法小结
2013/12/18 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
jQuery实现仿美橙互联两级导航菜单效果完整实例
2015/09/17 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
你可能不知道的CORS跨域资源共享
2019/03/13 Javascript
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
python爬虫之自制英汉字典
2019/06/24 Python
对Python中画图时候的线类型详解
2019/07/07 Python
python腾讯语音合成实现过程解析
2019/08/01 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
阿联酋航空假期:Emirates Holidays
2018/03/20 全球购物
EJB发布WEB服务一般步骤
2012/10/31 面试题
北大研究生linux应用求职信
2013/10/29 职场文书
专科文秘应届生求职信
2013/11/18 职场文书
献爱心标语
2014/06/21 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
公司法定代表人授权委托书
2014/09/29 职场文书
入党后的感想
2015/08/10 职场文书