首页 > 上网技巧 > 电脑小技巧 > PHP获取访客客户端操作系统方法探讨

PHP获取访客客户端操作系统方法探讨

时间:2015-05-07 15:11 作者:QQ地带 我要评论

之前小编收集整理过一篇《PHP获取访客客户端操作系统》,小编在某站加入了这样的判断,分析数据的时候发现不对劲,产生异常的是移动端。然后仔细查看了日志,发现某些浏览器的标头中居然含有linux。>>>安卓ios主流浏览器User-Agent汇总

准确的说,安卓系统下的所有浏览器UA信息都含有linux,如:

QQ浏览器:Mozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; HTC D820u Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.6 Mobile Safari/537.36

这样,只要是安卓就会被误判为linux系统了。怎么办呢。

既然特点是含有linux也含有Android,那么判断就应该是:

  1. if (preg_match('/linux/i',$OS)) {  //先判断包含linux
  2.                     if(preg_match('/Android/i',$OS)) //再判断如果包含android
  3.                $OS = 'Android';  
  4.                     else //如果不包含android
  5.                $OS = 'linux'; }

 

 

 

  1. function Get_Os(){  
  2.        if(!emptyempty($_SERVER['HTTP_USER_AGENT'])){  
  3.            $OS = $_SERVER['HTTP_USER_AGENT'];  
  4.            if (preg_match('/win/i',$OS)) {  
  5.                $OS = 'Windows';  
  6.            }  
  7.            elseif (preg_match('/mac/i',$OS)) {  
  8.                $OS = 'MAC';  
  9.            }  
  10.            elseif (preg_match('/linux/i',$OS)) {  
  11.                     if(preg_match('/Android/i',$OS)) 
  12.                $OS = 'Android';  
  13.                     else 
  14.                $OS = 'linux';  
  15.            }  
  16.            elseif (preg_match('/unix/i',$OS)) {  
  17.                $OS = 'Unix';  
  18.            }  
  19.            elseif (preg_match('/bsd/i',$OS)) {  
  20.                $OS = 'BSD';  
  21.            }  
  22.            else {  
  23.                $OS = 'Other';  
  24.            }  
  25.            return $OS;    
  26.        }  
  27.        else{  
  28.            return "unknow";  
  29.        }     
  30.  }  

标签: php
顶一下
(0)
0%
踩一下
(0)
0%

Google提供的广告