1. 程式人生 > >PHP判斷訪問者是PC端還是移動端

PHP判斷訪問者是PC端還是移動端

hit agent net roi view lac 識別 連接 android

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

======================

首先推薦一個php輕量級識別類,Mobile-Detect 專門識別是手機端還是pc端訪問網站,這樣就可以根據訪問的終端類型指向手機瀏覽器適配的網站還是pc瀏覽器的網站。

Mobile-Detect官網鏈接如下MobileDetect

示例鏈接如下:Mobile-Detect Example

下面是我寫得簡單的跳轉適配PC端還是手機端的代碼:

[php] view plain copy
  1. <?php
  2. require_once ‘Mobile_Detect.php‘; //註意要引入Mobile_Detect.php 這個類在上文的連接中有下載鏈接
  3. $detect = new Mobile_Detect;
  4. if($detect->isMobile()){
  5. header(‘Location: http://127.0.0.1/MobileDetect/MobileDetect/mobile.html‘, true, 301);
  6. echo "mobile";
  7. }else{
  8. header(‘Location: http://127.0.0.1/MobileDetect/MobileDetect/pc.html‘, true, 301);
  9. echo "pc";
  10. }
  11. ?>

PHP判斷訪問者是PC端還是移動端