首頁  >  文章  >  後端開發  >  利用PHP判斷是手機行動裝置還是PC端存取的函數範例_php技巧

利用PHP判斷是手機行動裝置還是PC端存取的函數範例_php技巧

韦小宝
韦小宝原創
2017-12-15 13:22:572036瀏覽

在平常工作開發中,我們通常需要開發出PC端和行動端兩個不同的系統,從而根據存取端的不同進入到不同的操作介面。以下這篇文章主要給大家介紹了關於利用PHP判斷是手機行動端還是PC端存取的PHP函數的相關資料,不了解PHP這方面知識或需要的朋友可以參考下。

前言

最近在開發專案的時候,分別開發了PC端和手機端,需要實現,用手機存取PC端WWW網域的時候,自動判斷跳到行動端,用電腦造訪M網域手機網站的時候,自動跳到PC端網站,於是有了下面這個判斷函數:

範例程式碼:


/**
 * 移动端判断
 */
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[&#39;HTTP_ACCEPT&#39;], &#39;vnd.wap.wml&#39;) !== false) && (strpos($_SERVER[&#39;HTTP_ACCEPT&#39;], &#39;text/html&#39;) === false || (strpos($_SERVER[&#39;HTTP_ACCEPT&#39;], &#39;vnd.wap.wml&#39;) < strpos($_SERVER[&#39;HTTP_ACCEPT&#39;], &#39;text/html&#39;))))
 {
  return true;
 } 
 } 
 return false;
}


PHP isset 函數作用

#isset函數是偵測變數是否設定。

格式:bool isset ( mixed var [, mixed var [, ...]] )

傳回值:

  • #若變數不存在則回傳FALSE

  • 若變數存在且其值為NULL,也傳回FALSE

  • 若變數存在且值不為NULL,則傳回TURE

  • 同時檢查多個變數時,每個單一項目都符合上一條要求時才傳回TRUE,否則結果為FALSE

  • 如果已經使用unset() 釋放了一個變數之後,它將不再是isset() 。若使用 isset() 測試一個被設定成 NULL 的變量,將會傳回 FALSE。同時要注意的是一個 NULL 位元組("\0")並不等同於 PHP 的 NULL 常數。

警告: isset() 只能用於變量,因為傳遞任何其它參數都會造成解析錯誤。若想要偵測常數是否已設置,可使用 defined() 函數。


<?php
$a = array (&#39;test&#39; => 1, &#39;hello&#39; => NULL);
var_dump( isset ($a[&#39;test&#39;) ); // TRUE
var_dump( isset ($a[&#39;foo&#39;) ); // FALSE
var_dump( isset ($a[&#39;hello&#39;) ); // FALSE
// &#39;hello&#39; 等于 NULL,所以被认为是未赋值的。
// 如果想检测 NULL 键值,可以试试下边的方法。
var_dump( array_key_exists(&#39;hello&#39;, $a) ); // TRUE
?>


#總結

以上就是本文的所有內容了,希望會為大家帶來幫助! !

相關推薦:

#PHP判斷是否為手機用戶端的方法

php判斷檔案是否存在file_exists()函數使用詳解

#php判斷ip黑名單程式碼實例詳解

以上是利用PHP判斷是手機行動裝置還是PC端存取的函數範例_php技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn