標籤: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