因為工作需我們寫一個電腦手機共用一個域名,當是手機用戶是就訪問手機頁面,如果是電腦用戶就訪問web頁面,下面我們找到判斷為手機用戶php代碼分享給大家.
網上找到的:手機訪問,原理是手機通過移動公司的代理服務器進行的訪問,那么我們就可以理解是一臺普通電腦使用了代理服務器,當手機通過代理服務器訪問的時候,http頭信息會毫無疑問的包含一個信息:via,這個信息提供了有價值的判斷信息.
例如河南移動取得的via信息是:
http/1.1 hazz-b-gw001-wap(infox-wisg, huawei technologies)
河南聯通的via信息是:zxwap gateway,zte technologies
PHP實例代碼如下:
- // check if wap by xhatfunction
- check_wap() {
- return stristr($_SERVER['HTTP_VIA'],"wap") ? true : false;
- }
這樣做的結果是沒有人能偽造手機訪問,判斷絕對準確,自然,這樣對于網上流行的手機wap模擬器也做了屏蔽—-從根本上屏蔽,這樣肯定不行,在網上又看到這一樣一個.
php判斷手機瀏覽器的函數,代碼如下,加入了對ipad和android的判斷:
- // check if wap
- function check_wap(){
- if(stristr($_SERVER['HTTP_VIA'],"wap")){// 先檢查是否為wap代理,準確度高
- return true;
- }elseif(strpos(strtoupper($_SERVER['HTTP_ACCEPT']),"VND.WAP.WML") > 0){// 檢查瀏覽器是否接受 WML.
- return true;
- }elseif(preg_match('/(blackberry|configuration/cldc|hp |hp-|htc |htc_|htc-|iemobile|kindle|midp|mmp|motorola|mobile|nokia|opera mini|opera |Googlebot-Mobile|YahooSeeker/M1A1-R2D2|android|iphone|ipod|mobi|palm|palmos|pocket|portalmmm|ppc;|smartphone|sonyericsson|sqh|spv|symbian|treo|up.browser|up.link|vodafone|windows ce|xda |xda_)/i', $_SERVER['HTTP_USER_AGENT'])){//檢查USER_AGENT
- return true;
- }else{
- return false;
- }
- }
測試后還是有問題,不講你也知道,后來看到了wordpress的 function.php 文件這樣一段,代碼如下:
- //判斷是否屬手機
- function is_mobile() {
- $user_agent = $_SERVER['HTTP_USER_AGENT'];
- $mobile_agents = Array("240x320","acer","acoon","acs-","abacho","ahong","airness","alcatel","amoi","android","anywhereyougo.com","applewebkit/525","applewebkit/532","asus","audio","au-mic","avantogo","becker","benq","bilbo","bird","blackberry","blazer","bleu","cdm-","compal","coolpad","danger","dbtel","dopod","elaine","eric","etouch","fly ","fly_","fly-","go.web","goodaccess","gradiente","grundig","haier","hedy","hitachi","htc","huawei","hutchison","inno","ipad","ipaq","ipod","jbrowser","kddi","kgt","kwc","lenovo","lg ","lg2","lg3","lg4","lg5","lg7","lg8","lg9","lg-","lge-","lge9","longcos","maemo","mercator","meridian","micromax","midp","mini","mitsu","mmm","mmp","mobi","mot-","moto","nec-","netfront","newgen","nexian","nf-browser","nintendo","nitro","nokia","nook","novarra","obigo","palm","panasonic","pantech","philips","phone","pg-","playstation","pocket","pt-","qc-","qtek","rover","sagem","sama","samu","sanyo","samsung","sch-","scooter","sec-","sendo","sgh-","sharp","siemens","sie-","softbank","sony","spice","sprint","spv","symbian","tablet","talkabout","tcl-","teleca","telit","tianyu","tim-","toshiba","tsm","up.browser","utec","utstar","verykool","virgin","vk-","voda","voxtel","vx","wap","wellco","wig browser","wii","windows ce","wireless","xda","xde","zte");
- $is_mobile = false;
- foreach ($mobile_agents as $device) {
- if (stristr($user_agent, $device)) {
- $is_mobile = true;
- break;
- }
- }
- return $is_mobile;
- }
在你web 加入如下代碼:
- if( is_mobile() ){
- include('手機訪問.php文件即可');exit;
- }
解決這類問題的方法有很多,如果你不想這樣操作可直接使用二級域名了.
新聞熱點
疑難解答