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 5.3.1 安装包 VC9 VC6不同版本的区别是什么
Jul 04 PHP
php 广告调用类代码(支持Flash调用)
Aug 11 PHP
php自动给文章加关键词链接的函数代码
Nov 29 PHP
PHP中读取照片exif信息的方法
Aug 20 PHP
支付宝接口开发集成支付环境小结
Mar 17 PHP
php利用smtp类实现电子邮件发送
Oct 30 PHP
YII Framework教程之异常处理详解
Mar 14 PHP
PHP中empty,isset,is_null用法和区别
Feb 19 PHP
thinkPHP5框架设置404、403等http状态页面的方法
Jun 05 PHP
Yii2语言国际化的配置教程
Aug 19 PHP
php 调用百度sms来发送短信的实现示例
Nov 02 PHP
Laravel如何实现适合Api的异常处理响应格式
Jun 14 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简单获取目录列表的方法
2015/03/24 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
document.forms[].submit()使用介绍
2014/02/19 Javascript
javascript匿名函数应用示例介绍
2014/03/07 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
基于JS递归函数细化认识及实用实例(推荐)
2017/08/07 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
2019/03/28 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
python之wxPython菜单使用详解
2014/09/28 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
django实现支付宝支付实例讲解
2019/10/17 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
We Fashion荷兰:一家国际时装公司
2018/04/18 全球购物
美发店5.1活动方案
2014/01/24 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
统计员岗位职责范本
2015/04/14 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
怎样写好工作计划
2019/04/10 职场文书
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript