如何判斷是手機或電腦訪問web

來源:互聯網
上載者:User

標籤:Proxy 伺服器   手機   介面   php   

行動裝置越來越主流,有很多網站對手機訪問並不是特別的友好。所以我們要另外的給手機客戶分配針對手機web訪問的介面。如何判斷是手機還是電腦在訪問呢?

首先手機訪問時,會附帶發送user-agent資訊,這個資訊裡面會有手機號碼資訊。我們如果可以擷取。。。算了,用腳趾頭也會想到,這是屬於使用者個人隱私資訊的,移動和聯通公司肯定給屏蔽或加密了。除非你伺服器IP是在他們的白名單上。

那麼我們換其他方式,當手機通過Proxy 伺服器訪問的時候,http頭資訊會毫無疑問的包含一個資訊:via。這個資訊提供了有價值的判斷資訊。

比如:

河南移動取得的via資訊是:
http/1.1 hazz-b-gw001-wap(infox-wisg, huawei technologies)
河南聯通的via資訊是:
zxwap gateway,zte technologies

這樣我們擷取http的via資訊字串看是否包含wap字元,如果有則是通過手機訪問。這樣就十分準確了,但是也會屏蔽掉那些用手機模擬器的使用者,(就是用支援wap的瀏覽器)。。。

先看代碼《=====

check_wap() {       return stristr($_SERVER[‘HTTP_VIA‘],"wap") ? true : false;  }  
當然上面那個方法太精準了,我們也想讓那些用手機模擬器的客戶也可以訪問的話,就要再想個辦法了。

下面是我網上查的一個辦法,通過判斷瀏覽器代理標識符,判斷是否是支援WAP的瀏覽器來決定訪問頁面。這有一個缺點就是不可能全部的列出所有手機的瀏覽器標識符與所支援的瀏覽器標識符。額好吧。。。

先看下代碼《====

<?php  function check_wap() {      if (isset($_SERVER[‘HTTP_VIA‘])) return true;      if (isset($_SERVER[‘HTTP_X_NOKIA_CONNECTION_MODE‘])) return true;      if (isset($_SERVER[‘HTTP_X_UP_CALLING_LINE_ID‘])) return true;      if (strpos(strtoupper($_SERVER[‘HTTP_ACCEPT‘]),"VND.WAP.WML") > 0) {          // Check whether the browser/gateway says it accepts WML.          $br = "WML";  
    //上面返回true 都是wap 訪問    } else {          $browser = isset($_SERVER[‘HTTP_USER_AGENT‘]) ? trim($_SERVER[‘HTTP_USER_AGENT‘]) : ‘‘;          if(empty($browser)) return true;          $browser=substr($browser,0,4);          if ($browser=="Noki" || // Nokia phones and emulators              $browser=="Eric" || // Ericsson WAP phones and emulators              $browser=="WapI" || // Ericsson WapIDE 2.0              $browser=="MC21" || // Ericsson MC218              $browser=="AUR" || // Ericsson R320              $browser=="R380" || // Ericsson R380              $browser=="UP.B" || // UP.Browser              $browser=="WinW" || // WinWAP browser              $browser=="UPG1" || // UP.SDK 4.0              $browser=="upsi" || // another kind of UP.Browser ??              $browser=="QWAP" || // unknown QWAPPER browser              $browser=="Jigs" || // unknown JigSaw browser              $browser=="Java" || // unknown Java based browser              $browser=="Alca" || // unknown Alcatel-BE3 browser (UP based?)              $browser=="MITS" || // unknown Mitsubishi browser              $browser=="MOT-" || // unknown browser (UP based?)              $browser=="My S" ||// unknown Ericsson devkit browser ?              $browser=="WAPJ" || // Virtual WAPJAG www.wapjag.de              $browser=="fetc" || // fetchpage.cgi Perl script from www.wapcab.de              $browser=="ALAV" || // yet another unknown UP based browser ?              $browser=="Wapa" || // another unknown browser (Web based "Wapalyzer"?)              $browser=="Oper") // Opera          {              $br = "WML";          } else {              $br = "HTML";          }      }      if($br == "WML") {          return TRUE;      } else {          return FALSE;      }  }  if(!check_wap()) {      Header("Location: http://youUrl");      exit();  }  
當然我們的目的是給那些用非電腦訪問的客戶返回那些適合他們的 十分友好的介面。

那麼我認為一個好的辦法就是用PHP去判斷訪問web 的瀏覽器的詳細資料,瀏覽器尺寸大小,版本、核心、等等,來因材施教的返回web介面。


如何判斷是手機或電腦訪問web

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.