PHP判斷訪問者是PC端還是移動端
阿新 • • 發佈:2018-05-12
hit agent net roi view lac 識別 連接 android
- function isMobile()
- {
- // 如果有HTTP_X_WAP_PROFILE則一定是移動設備
- if (isset ($_SERVER[‘HTTP_X_WAP_PROFILE‘]))
- {
- return true;
- }
- // 如果via信息含有wap則一定是移動設備,部分服務商會屏蔽該信息
- if (isset ($_SERVER[‘HTTP_VIA‘]))
- {
- // 找不到為flase,否則為true
- return stristr($_SERVER[‘HTTP_VIA‘], "wap") ? true : false;
- }
- // 腦殘法,判斷手機發送的客戶端標誌,兼容性有待提高
- if (isset ($_SERVER[‘HTTP_USER_AGENT‘]))
- {
- $clientkeywords = array (‘nokia‘,
- ‘sony‘,
- ‘ericsson‘,
- ‘mot‘,
- ‘samsung‘,
- ‘htc‘,
- ‘sgh‘,
- ‘lg‘,
- ‘sharp‘,
- ‘sie-‘,
- ‘philips‘,
- ‘panasonic‘,
- ‘alcatel‘,
- ‘lenovo‘,
- ‘iphone‘,
- ‘ipod‘,
- ‘blackberry‘,
- ‘meizu‘,
- ‘android‘,
- ‘netfront‘,
- ‘symbian‘,
- ‘ucweb‘,
- ‘windowsce‘,
- ‘palm‘,
- ‘operamini‘,
- ‘operamobi‘,
- ‘openwave‘,
- ‘nexusone‘,
- ‘cldc‘,
- ‘midp‘,
- ‘wap‘,
- ‘mobile‘
- );
- // 從HTTP_USER_AGENT中查找手機瀏覽器的關鍵字
- if (preg_match("/(" . implode(‘|‘, $clientkeywords) . ")/i", strtolower($_SERVER[‘HTTP_USER_AGENT‘])))
- {
- return true;
- }
- }
- // 協議法,因為有可能不準確,放到最後判斷
- if (isset ($_SERVER[‘HTTP_ACCEPT‘]))
- {
- // 如果只支持wml並且不支持html那一定是移動設備
- // 如果支持wml和html但是wml在html之前則是移動設備
- if ((strpos($_SERVER[‘HTTP_ACCEPT‘], ‘vnd.wap.wml‘) !== false) && (strpos($_SERVER[‘HTTP_ACCEPT‘], ‘text/html‘) === false || (strpos($_SERVER[‘HTTP_ACCEPT‘], ‘vnd.wap.wml‘) < strpos($_SERVER[‘HTTP_ACCEPT‘], ‘text/html‘))))
- {
- return true;
- }
- }
- return false;
- }
======================
首先推薦一個php輕量級識別類,Mobile-Detect 專門識別是手機端還是pc端訪問網站,這樣就可以根據訪問的終端類型指向手機瀏覽器適配的網站還是pc瀏覽器的網站。
Mobile-Detect官網鏈接如下MobileDetect
示例鏈接如下:Mobile-Detect Example
下面是我寫得簡單的跳轉適配PC端還是手機端的代碼:
[php] view plain copy
- <?php
- require_once ‘Mobile_Detect.php‘; //註意要引入Mobile_Detect.php 這個類在上文的連接中有下載鏈接
- $detect = new Mobile_Detect;
- if($detect->isMobile()){
- header(‘Location: http://127.0.0.1/MobileDetect/MobileDetect/mobile.html‘, true, 301);
- echo "mobile";
- }else{
- header(‘Location: http://127.0.0.1/MobileDetect/MobileDetect/pc.html‘, true, 301);
- echo "pc";
- }
- ?>
PHP判斷訪問者是PC端還是移動端