php 判斷是否手機端還是pc端


來自:https://www.cnblogs.com/webenh/p/5621890.html

用手機訪問PC端WWW域名的時候,自動判斷跳轉到移動端,用電腦訪問M域名手機網站的時候,自動跳轉到PC端,
我們團隊在開發erdaicms二代旅游CMS網站管理系統的時候(http://www.erdaicms.com),分別開發了PC端和手機端,需要實現,用手機訪問PC端WWW域名的時候,自動判斷跳轉到移動端,用電腦訪問M域名手機網站的時候,自動跳轉到PC端,於是有了下面這個判斷函數:

 

 1 /*移動端判斷*/
 2 function isMobile()
 3 { 
 4     // 如果有HTTP_X_WAP_PROFILE則一定是移動設備
 5     if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
 6     {
 7         return true;
 8     } 
 9     // 如果via信息含有wap則一定是移動設備,部分服務商會屏蔽該信息
10     if (isset ($_SERVER['HTTP_VIA']))
11     { 
12         // 找不到為flase,否則為true
13         return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
14     } 
15     // 腦殘法,判斷手機發送的客戶端標志,兼容性有待提高
16     if (isset ($_SERVER['HTTP_USER_AGENT']))
17     {
18         $clientkeywords = array ('nokia',
19             'sony',
20             'ericsson',
21             'mot',
22             'samsung',
23             'htc',
24             'sgh',
25             'lg',
26             'sharp',
27             'sie-',
28             'philips',
29             'panasonic',
30             'alcatel',
31             'lenovo',
32             'iphone',
33             'ipod',
34             'blackberry',
35             'meizu',
36             'android',
37             'netfront',
38             'symbian',
39             'ucweb',
40             'windowsce',
41             'palm',
42             'operamini',
43             'operamobi',
44             'openwave',
45             'nexusone',
46             'cldc',
47             'midp',
48             'wap',
49             'mobile'
50             ); 
51         // 從HTTP_USER_AGENT中查找手機瀏覽器的關鍵字
52         if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))
53         {
54             return true;
55         } 
56     } 
57     // 協議法,因為有可能不准確,放到最后判斷
58     if (isset ($_SERVER['HTTP_ACCEPT']))
59     { 
60         // 如果只支持wml並且不支持html那一定是移動設備
61         // 如果支持wml和html但是wml在html之前則是移動設備
62         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'))))
63         {
64             return true;
65         } 
66     } 
67     return false;
68 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM