当采用php作为服务数据端口,为移动端,pc端提供数据接口的时候,可能会要求记录接口访问的来源是来之哪里。
例如:生成订单,可能就需要记录,以便做一些数据分析,为运营和推广提供一些数据支持。
现在移动终端是太多的了,所以你也不得不做出这么多的判断的了。看下这些移动终端的判断吧:
function order_source(){ $useragent=strtolower($_SERVER["HTTP_USER_AGENT"]); // iphone $is_iphone =strripos($useragent,'iphone'); if($is_iphone){ return 'iphone'; } // android $is_android =strripos($useragent,'android'); if($is_android){ return 'android'; } //微信 $is_weixin=strripos($useragent,'micromessenger'); if($is_weixin){ return 'weixin'; } // ipad $is_ipad =strripos($useragent,'ipad'); if($is_ipad){ return 'ipad'; } // ipod $is_ipod=strripos($useragent,'ipod'); if($is_ipod){ return 'ipod'; } // pc电脑 $is_pc=strripos($useragent,'windows nt'); if($is_pc){ return 'pc'; } return 'other'; }
根据自己的需求 ,来做一些特殊处理比如区分浏览器,这里就不做介绍了。自己echo $_SERVER["HTTP_USER_AGENT"]出来看一下就明了。
如果判断是不是属于微信浏览器,在IOS系统和ANDROID下都通用的就是判断HTTP_USER_AGENT中是否带有:micromessenger。
$res=strripos($str,$findstr)此方法是在$str字符串中匹配 $findstr最后一次出现的位置,匹配不到返回false,也就是说假如匹配的字符串在首位出现就会返回0,那么if($res){...}就无法正确返回,比较正确的写法应该是if($res === 0 || $res > 0){...},(3个等于号是不仅是值相等还要数据类型相等),
当然我们已经知道哪些关键字是不会出现在首位,所以上面那种写法就可以了。