當我們采用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個等於號是不僅是值相等還要數據類型相等),
當然我們已經知道哪些關鍵字是不會出現在首位,所以上面那種寫法就可以了.
*