根據UA簡單判斷訪客客戶端是手機移動端還是電腦PC端
畢竟手機端的UA太多也太雜亂了,一個個去找太蛋疼,索性從別人PHP判斷手機端還是PC端的函式程式碼抄襲過來了,先附上Golang程式碼然後附上再PHP程式碼。
Golang程式碼:
package main
import (
"fmt"
"strings"
)
func main() {
ua_pc := "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36"
ua_mobile := "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"
fmt.Println("手機端?", Client(ua_pc))
fmt.Println("手機端?", Client(ua_mobile))
}
//根據ua判斷訪客是手機端還是PC端訪問
//手機端返回true,否則返回false,預設返回false,即PC端
func Client(ua string) bool {
ua = strings.ToLower(ua)
//常見的手機端UA判斷,有即預設為手機端 pad、phone關鍵字替代ipad,iphone,apad等
mobile := []string{"mobile", "phone", "android", "pad", "pod", "symbian", "wap", "smartphone", "apk", "ios"}
for _, m := range mobile {
if strings.Contains(ua, m) {
return true
}
}
//生僻的不常見的UA判斷
mbstr := "w3c,acs-,alav,alca,amoi,audi,avan,benq,bird,blac"
mbstr += "blaz,brew,cell,cldc,cmd-,dang,doco,eric,hipt,inno"
mbstr += "ipaq,java,jigs,kddi,keji,leno,lg-c,lg-d,lg-g,"
mbstr += "maui,maxo,midp,mits,mmef,mobi,mot-,moto,mwbp,"
mbstr += "newt,noki,oper,palm,pana,pant,phil,play,port,prox"
mbstr += "qwap,sage,sams,sany,sch-,sec-,send,seri,sgh-,shar"
mbstr += "sie-,siem,smal,smar,sony,sph-,symb,t-mo,teli,"
mbstr += "tosh,tsm-,upg1,upsi,vk-v,voda,wap-,wapa,wapi,wapp"
mbstr += "wapr,webc,winw,winw,xda,xda-,up.browser,up.link,mmp,midp,xoom"
slice := strings.Split(mbstr, ",")
for _, m := range slice {
if strings.Contains(ua, m) {
return true
}
}
return false
}
PHP程式碼:
/**
* 檢測是否是手機端
* @return boolean */
function is_mobile(){
$_SERVER['ALL_HTTP'] = isset($_SERVER['ALL_HTTP']) ? $_SERVER['ALL_HTTP'] : '';
$mobile_browser = '0';
if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|iphone|ipad|ipod|android|xoom)/i', strtolower($_SERVER['HTTP_USER_AGENT'])))
$mobile_browser++;
if((isset($_SERVER['HTTP_ACCEPT'])) and (strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') !== false))
$mobile_browser++;
if(isset($_SERVER['HTTP_X_WAP_PROFILE']))
$mobile_browser++;
if(isset($_SERVER['HTTP_PROFILE']))
$mobile_browser++;
$mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));
$mobile_agents = array(
'w3c ','','alav','alca','amoi','audi','avan','benq','bird','blac',
'blaz','brew','cell','cldc','','dang','doco','eric','hipt','inno',
'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','',
'maui','maxo','midp','mits','mmef','mobi','','moto','mwbp','',
'newt','noki','oper','palm','pana','pant','phil','play','port','prox',
'qwap','sage','sams','sany','','','send','seri','','shar',
'','siem','smal','smar','sony','','symb','t-mo','teli','',
'tosh','','upg1','upsi','vk-v','voda','','wapa','wapi','wapp',
'wapr','webc','winw','winw','xda',''
);
if(in_array($mobile_ua, $mobile_agents)) $mobile_browser++;
if(strpos(strtolower($_SERVER['ALL_HTTP']), 'operamini') !== false) $mobile_browser++;
// Pre-final check to reset everything if the user is on Windows
if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows') !== false) $mobile_browser=0;
// But WP7 is also Windows, with a slightly different characteristic
if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows phone') !== false) $mobile_browser++;
if($mobile_browser>0) return true;
return false;
}
相關文章
- PHP判斷是手機移動端訪問還是PC端訪問的函式PHP函式
- JS 判斷客戶端是iOS還是AndroidJS客戶端iOSAndroid
- 判斷當前訪問的使用者是 PC端 還是 手機端
- JavaScript判斷手機、平板電腦客戶端程式碼JavaScript客戶端
- 判斷在移動端還是PC開啟
- 雲伺服器ASP判斷客戶端是手機或電腦程式碼伺服器客戶端
- 如何判斷頁面是pc端還是移動端,進入不同的頁面
- 判斷客戶端是iOS還是Android,判斷是不是在微信瀏覽器開啟客戶端iOSAndroid瀏覽器
- js 判斷是手機訪問,還是pc訪問JS
- VNC客戶端是Windows,VNC客戶端是Windows如何進行操作VNC客戶端Windows
- 什麼是客戶端渲染?客戶端
- nginx 判斷移動端或者 PC 端 進入不同專案Nginx
- Nginx根據PC端和手機端跳轉不同的路徑Nginx
- HTTP客戶端連線,選擇HttpClient還是OkHttp?HTTP客戶端client
- 移動端的判斷
- ElasticSearch客戶端簡單操作例項Elasticsearch客戶端
- php判斷終端型別(手機與pc)PHP型別
- 傳入http請求的UserAgent 根據它判斷是手機還是電腦傳送過來的請求HTTP
- 判斷電腦的大小端
- 自己動手寫個 Android客戶端Android客戶端
- 服務端,客戶端服務端客戶端
- 客戶端,服務端客戶端服務端
- SHA-256加密簡單例項(客戶端、服務端)加密單例客戶端服務端
- 利用tirpc庫實現簡單的客戶端和服務端RPC客戶端服務端
- dubbo客戶端客戶端
- Pulsar客戶端客戶端
- mqtt 客戶端MQQT客戶端
- Linux下簡單的ACE socket客戶端和伺服器端Linux客戶端伺服器
- TCP通訊客戶端和服務端簡單程式碼實現TCP客戶端服務端
- Socket最簡單的客戶端與服務端通訊-Java客戶端服務端Java
- Nacos - 客戶端心跳續約及客戶端總結客戶端
- OpenSNS開源社交系統+基於ThinkPHP 5.3以上+PC端+客戶端+手機網頁版PHP客戶端網頁
- 基於node的tcp客戶端和服務端的簡單通訊TCP客戶端服務端
- 物理DataGuard客戶端無縫切換--客戶端TAF 配置客戶端
- [Redis 客戶端整合] Java 中常用Redis客戶端比較Redis客戶端Java
- vue 判斷使用者處於手機還是PCVue
- 自適應服務端渲染(服務端根據客戶端環境自適應地響應首屏)服務端客戶端
- 支付寶客戶端架構解析:iOS 客戶端啟動效能優化初探客戶端架構iOS優化
- java websocket 客戶端JavaWeb客戶端