PHPが訪問者が携帯端末(モバイル端末ブラウザ)にアクセスしているかどうかを判断する方法まとめ【4つの方法】

3853 ワード

この例では,PHPが訪問者が携帯端末(モバイル端末ブラウザ)にアクセスするか否かを判断する方法をまとめた.皆さんの参考にしてください.具体的には以下の通りです.
通常の作業開発では、アクセス側によって異なる操作インタフェースにアクセスするために、PC側とモバイル側の2つの異なるシステムを開発する必要があります.これは,まず,アクセスしたクライアントがPC側であるかモバイル側であるかを判断する必要がある.
この文書では、PHPを使用して、アクセス側がモバイル側(またはモバイル側ブラウザ)であるかどうかを判断し、モバイル側アクセスであるかどうかを判断する4つの方法について説明します.
1、HTTP_によるX_WAP_PROFILEが存在するかどうかを判断すると、存在するのはモバイル側(一部のサービス業者がこの情報を遮断している)

/**
*         
* @desc             
* @   :     HTTP_X_WAP_PROFILE,         。
* @return bool
* $Author: Zhihua_W
*/
function isMobile1()
{
   if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) {
     return true;
   } else {
     return false;
   }
}


2、HTTP_によるVIA情報は、VIA情報にwapが含まれている場合はモバイル機器であると判断する(一部のサービス業者はこの情報を遮断する)

/**
 *         
 * @desc             
 * @   :  HTTP_VIA      wap  ,         。
 * @return bool
 * $Author: Zhihua_W
 */
 function isMobile2 ()
 {
   if (isset ($_SERVER['HTTP_VIA'])) {
     return true;
   } else {
     return false;
   }
 }


3、携帯電話から送信されたクライアントマークに基づいて判断する.この方法は不器用で、互換性が向上する必要がある.

/**
*         
* @desc             
* @   :     HTTP_USER_AGENT               ,         。
* @return bool
* $Author: Zhihua_W
*/
function isMobile3 ()
{
   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;
    } else {
      return false;
    }
  } else {
    return false;
  }
}


4、協議によって判断する場合、この方法は正しくないか判断できない可能性がある

/**
*         
* @desc             
* @   :  HTTP_ACCEPT  
* @return bool
* $Author: Zhihua_W
*/
function isMobile4()
{
  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;
    } else {
    return false;
    }
  } else {
    return false;
  }
}


以上の4つの方法はいずれも一部の欠陥や互換性が悪いなどの問題があるため,ブロ友は4つの方法を1つの方法に結合して判断することができる.
PS:ここでは、似たような機能を持つブラウザ判断オンラインツールを2つお勧めします.
オンラインブラウザ情報検出ツール:http://tools.jb51.net/aideddesign/browser_info
一般ブラウザ(PC、モバイル)user-agent:http://tools.jb51.net/table/useragent
PHPの関連内容についてもっと興味のある読者は、「PHPネットワークプログラミング技術総括」、「php正規表現用法総括」、「php curl用法総括」、「PHP配列(Array)操作技術大全」、「php文字列(string)用法総括」、「PHPデータ構造とアルゴリズム教程」、「phpプログラム設計アルゴリズム総括」、《PHP数学演算技巧総括》及び《phpよく見られるデータベース操作技巧要約》
ここで述べたことが皆さんのPHPプログラム設計に役立つことを願っています.