wap跳转网络技巧 -电脑资料

主要依靠mobile_device_detect.php识别移动设备,

wap跳转网络技巧

mobile_device_detect.php代码:

view source

001<?php

002

003functionmobile_device_detect($iphone=true,$ipad=true,$android=true,$opera=true,$blackberry=true,$palm=true,$windows=true,$mobileredirect=false,$desktopredirect=false){

004

005$mobile_browser= false;// set mobile browser as false till we can prove otherwise

006$user_agent=$_SERVER['HTTP_USER_AGENT'];// get the user agent value - this should be cleaned to ensure no nefarious input gets executed

007$accept=$_SERVER['HTTP_ACCEPT'];// get the content accept value - this should be cleaned to ensure no nefarious input gets executed

008

009switch(true){// using a switch against the following statements which could return true is more efficient than the previous method of using if statements

010

011case(preg_match('/ipad/i',$user_agent));// we find the word ipad in the user agent

012$mobile_browser=$ipad;// mobile browser is either true or false depending on the setting of ipad when calling the function

013$status='Apple iPad';

014if(substr($ipad,0,4)=='http'){// does the value of ipad resemble a url

015$mobileredirect=$ipad;// set the mobile redirect url to the url value stored in the ipad value

016}// ends the if for ipad being a url

017break;// break out and skip the rest if we've had a match on the ipad // this goes before the iphone to catch it else it would return on the iphone instead

018

019case(preg_match('/ipod/i',$user_agent)||preg_match('/iphone/i',$user_agent));// we find the words iphone or ipod in the user agent

020$mobile_browser=$iphone;// mobile browser is either true or false depending on the setting of iphone when calling the function

021$status='Apple';

022if(substr($iphone,0,4)=='http'){// does the value of iphone resemble a url

023$mobileredirect=$iphone;// set the mobile redirect url to the url value stored in the iphone value

024}// ends the if for iphone being a url

025break;// break out and skip the rest if we've had a match on the iphone or ipod

026

027case(preg_match('/android/i',$user_agent));// we find android in the user agent

028$mobile_browser=$android;// mobile browser is either true or false depending on the setting of android when calling the function

029$status='Android';

030if(substr($android,0,4)=='http'){// does the value of android resemble a url

031$mobileredirect=$android;// set the mobile redirect url to the url value stored in the android value

032}// ends the if for android being a url

033break;// break out and skip the rest if we've had a match on android

034

035case(preg_match('/opera mini/i',$user_agent));// we find opera mini in the user agent

036$mobile_browser=$opera;// mobile browser is either true or false depending on the setting of opera when calling the function

037$status='Opera';

038if(substr($opera,0,4)=='http'){// does the value of opera resemble a rul

039$mobileredirect=$opera;// set the mobile redirect url to the url value stored in the opera value

040}// ends the if for opera being a url

041break;// break out and skip the rest if we've had a match on opera

042

043case(preg_match('/blackberry/i',$user_agent));// we find blackberry in the user agent

044$mobile_browser=$blackberry;// mobile browser is either true or false depending on the setting of blackberry when calling the function

045$status='Blackberry';

046if(substr($blackberry,0,4)=='http'){// does the value of blackberry resemble a rul

047$mobileredirect=$blackberry;// set the mobile redirect url to the url value stored in the blackberry value

048}// ends the if for blackberry being a url

049break;// break out and skip the rest if we've had a match on blackberry

050

051case(preg_match('/(pre\/|palm os|palm|hiptop|avantgo|plucker|xiino|blazer|elaine)/i',$user_agent));// we find palm os in the user agent - the i at the end makes it case insensitive

052$mobile_browser=$palm;// mobile browser is either true or false depending on the setting of palm when calling the function

053$status='Palm';

054if(substr($palm,0,4)=='http'){// does the value of palm resemble a rul

055$mobileredirect=$palm;// set the mobile redirect url to the url value stored in the palm value

056}// ends the if for palm being a url

057break;// break out and skip the rest if we've had a match on palm os

058

059case(preg_match('/(iris|3g_t|windows ce|opera mobi|windows ce; smartphone;|windows ce; iemobile)/i',$user_agent));// we find windows mobile in the user agent - the i at the end makes it case insensitive

060$mobile_browser=$windows;// mobile browser is either true or false depending on the setting of windows when calling the function

061$status='Windows Smartphone';

062if(substr($windows,0,4)=='http'){// does the value of windows resemble a rul

063$mobileredirect=$windows;// set the mobile redirect url to the url value stored in the windows value

064}// ends the if for windows being a url

065break;// break out and skip the rest if we've had a match on windows

066

067case(preg_match('/(mini 9.5|vx1000|lge |m800|e860|u940|ux840|compal|wireless| mobi|ahong|lg380|lgku|lgu900|lg210|lg47|lg920|lg840|lg370|sam-r|mg50|s55|g83|t66|vx400|mk99|d615|d763|el370|sl900|mp500|samu3|samu4|vx10|xda_|samu5|samu6|samu7|samu9|a615|b832|m881|s920|n210|s700|c-810|_h797|mob-x|sk16d|848b|mowser|s580|r800|471x|v120|rim8|c500foma:|160x|x160|480x|x640|t503|w839|i250|sprint|w398samr810|m5252|c7100|mt126|x225|s5330|s820|htil-g1|fly v71|s302|-x113|novarra|k610i|-three|8325rc|8352rc|sanyo|vx54|c888|nx250|n120|mtk |c5588|s710|t880|c5005|i;458x|p404i|s210|c5100|teleca|s940|c500|s590|foma|samsu|vx8|vx9|a1000|_mms|myx|a700|gu1100|bc831|e300|ems100|me701|me702m-three|sd588|s800|8325rc|ac831|mw200|brew |d88|htc\/|htc_touch|355x|m50|km100|d736|p-9521|telco|sl74|ktouch|m4u\/|me702|8325rc|kddi|phone|lg |sonyericsson|samsung|240x|x320|vx10|nokia|sony cmd|motorola|up.browser|up.link|mmp|symbian|smartphone|midp|wap|vodafone|o2|pocket|kindle|mobile|psp|treo)/i',$user_agent));// check if any of the values listed create a match on the user agent - these are some of the most common terms used in agents to identify them as being mobile devices - the i at the end makes it case insensitive

068$mobile_browser= true;// set mobile browser to true

069$status='Mobile matched on piped preg_match';

070break;// break out and skip the rest if we've preg_match on the user agent returned true

071

072case((strpos($accept,'text/vnd.wap.wml')>0)||(strpos($accept,'application/vnd.wap.xhtml+xml')>0));// is the device showing signs of support for text/vnd.wap.wml or application/vnd.wap.xhtml+xml

073$mobile_browser= true;// set mobile browser to true

074$status='Mobile matched on content accept header';

075break;// break out and skip the rest if we've had a match on the content accept headers

076

077case(isset($_SERVER['HTTP_X_WAP_PROFILE'])||isset($_SERVER['HTTP_PROFILE']));// is the device giving us a HTTP_X_WAP_PROFILE or HTTP_PROFILE header - only mobile devices would do this

078$mobile_browser= true;// set mobile browser to true

079$status='Mobile matched on profile headers being set';

080break;// break out and skip the final step if we've had a return true on the mobile specfic headers

081

082case(in_array(strtolower(substr($user_agent,0,4)),array('1207'=>'1207','3gso'=>'3gso','4thp'=>'4thp','501i'=>'501i','502i'=>'502i','503i'=>'503i','504i'=>'504i','505i'=>'505i','506i'=>'506i','6310'=>'6310','6590'=>'6590','770s'=>'770s','802s'=>'802s','a wa'=>'a wa','acer'=>'acer','acs-'=>'acs-','airn'=>'airn','alav'=>'alav','asus'=>'asus','attw'=>'attw','au-m'=>'au-m','aur '=>'aur ','aus '=>'aus ','abac'=>'abac','acoo'=>'acoo','aiko'=>'aiko','alco'=>'alco','alca'=>'alca','amoi'=>'amoi','anex'=>'anex','anny'=>'anny','anyw'=>'anyw','aptu'=>'aptu','arch'=>'arch','argo'=>'argo','bell'=>'bell','bird'=>'bird','bw-n'=>'bw-n','bw-u'=>'bw-u','beck'=>'beck','benq'=>'benq','bilb'=>'bilb','blac'=>'blac','c55/'=>'c55/','cdm-'=>'cdm-','chtm'=>'chtm','capi'=>'capi','cond'=>'cond','craw'=>'craw','dall'=>'dall','dbte'=>'dbte','dc-s'=>'dc-s','dica'=>'dica','ds-d'=>'ds-d','ds12'=>'ds12','dait'=>'dait','devi'=>'devi','dmob'=>'dmob','doco'=>'doco','dopo'=>'dopo','el49'=>'el49','erk0'=>'erk0','esl8'=>'esl8','ez40'=>'ez40','ez60'=>'ez60','ez70'=>'ez70','ezos'=>'ezos','ezze'=>'ezze','elai'=>'elai','emul'=>'emul','eric'=>'eric','ezwa'=>'ezwa','fake'=>'fake','fly-'=>'fly-','fly_'=>'fly_','g-mo'=>'g-mo','g1 u'=>'g1 u','g560'=>'g560','gf-5'=>'gf-5','grun'=>'grun','gene'=>'gene','go.w'=>'go.w','good'=>'good','grad'=>'grad','hcit'=>'hcit','hd-m'=>'hd-m','hd-p'=>'hd-p','hd-t'=>'hd-t','hei-'=>'hei-','hp i'=>'hp i','hpip'=>'hpip','hs-c'=>'hs-c','htc '=>'htc ','htc-'=>'htc-','htca'=>'htca','htcg'=>'htcg','htcp'=>'htcp','htcs'=>

'htcs','htct'=>'htct','htc_'=>'htc_','haie'=>'haie','hita'=>'hita','huaw'=>'huaw','hutc'=>'hutc','i-20'=>'i-20','i-go'=>'i-go','i-ma'=>'i-ma','i230'=>'i230','iac'=>'iac','iac-'=>'iac-','iac/'=>'iac/','ig01'=>'ig01','im1k'=>'im1k','inno'=>'inno','iris'=>'iris','jata'=>'jata','java'=>'java','kddi'=>'kddi','kgt'=>'kgt','kgt/'=>'kgt/','kpt '=>'kpt ','kwc-'=>'kwc-','klon'=>'klon','lexi'=>'lexi','lg g'=>'lg g','lg-a'=>'lg-a','lg-b'=>'lg-b','lg-c'=>'lg-c','lg-d'=>'lg-d','lg-f'=>'lg-f','lg-g'=>'lg-g','lg-k'=>'lg-k','lg-l'=>'lg-l','lg-m'=>'lg-m','lg-o'=>'lg-o','lg-p'=>'lg-p','lg-s'=>'lg-s','lg-t'=>'lg-t','lg-u'=>'lg-u','lg-w'=>'lg-w','lg/k'=>'lg/k','lg/l'=>'lg/l','lg/u'=>'lg/u','lg50'=>'lg50','lg54'=>'lg54','lge-'=>'lge-','lge/'=>'lge/','lynx'=>'lynx','leno'=>'leno','m1-w'=>'m1-w','m3ga'=>'m3ga','m50/'=>'m50/','maui'=>'maui','mc01'=>'mc01','mc21'=>'mc21','mcca'=>'mcca','medi'=>'medi','meri'=>'meri','mio8'=>'mio8','mioa'=>'mioa','mo01'=>'mo01','mo02'=>'mo02','mode'=>'mode','modo'=>'modo','mot '=>'mot ','mot-'=>'mot-','mt50'=>'mt50','mtp1'=>'mtp1','mtv '=>'mtv ','mate'=>'mate','maxo'=>'maxo','merc'=>'merc','mits'=>'mits','mobi'=>'mobi','motv'=>'motv','mozz'=>'mozz','n100'=>'n100','n101'=>'n101','n102'=>'n102','n202'=>'n202','n203'=>'n203','n300'=>'n300','n302'=>'n302','n500'=>'n500','n502'=>'n502','n505'=>'n505','n700'=>'n700','n701'=>'n701','n710'=>'n710','nec-'=>'nec-','nem-'=>'nem-','newg'=>'newg','neon'=>'neon','netf'=>'netf','noki'=>'noki','nzph'=>'nzph','o2 x'=>'o2 x','o2-x'=>'o2-x','opwv'=>'opwv','owg1'=>'owg1','opti'=>'opti','oran'=>'oran','p800'=>'p800','pand'=>'pand','pg-1'=>'pg-1','pg-2'=>'pg-2','pg-3'=>'pg-3','pg-6'=>'pg-6','pg-8'=>'pg-8','pg-c'=>'pg-c','pg13'=>'pg13','phil'=>'phil','pn-2'=>'pn-2','pt-g'=>'pt-g','palm'=>'palm','pana'=>'pana','pire'=>'pire','pock'=>'pock','pose'=>'pose','psio'=>'psio','qa-a'=>'qa-a','qc-2'=>'qc-2','qc-3'=>'qc-3','qc-5'=>'qc-5','qc-7'=>'qc-7','qc07'=>'qc07','qc12'=>'qc12','qc21'=>'qc21','qc32'=>'qc32','qc60'=>'qc60','qci-'=>'qci-','qwap'=>'qwap','qtek'=>'qtek','r380'=>'r380','r600'=>'r600','raks'=>'raks','rim9'=>'rim9','rove'=>'rove','s55/'=>'s55/','sage'=>'sage','sams'=>'sams','sc01'=>'sc01','sch-'=>'sch-','scp-'=>'scp-','sdk/'=>'sdk/','se47'=>'se47','sec-'=>'sec-','sec0'=>'sec0','sec1'=>'sec1','semc'=>'semc','sgh-'=>'sgh-','shar'=>'shar','sie-'=>'sie-','sk-0'=>'sk-0','sl45'=>'sl45','slid'=>'slid','smb3'=>'smb3','smt5'=>'smt5','sp01'=>'sp01','sph-'=>'sph-','spv '=>'spv ','spv-'=>'spv-','sy01'=>'sy01','samm'=>'samm','sany'=>'sany','sava'=>'sava','scoo'=>'scoo','send'=>'send','siem'=>'siem','smar'=>'smar','smit'=>'smit','soft'=>'soft','sony'=>'sony','t-mo'=>'t-mo','t218'=>'t218','t250'=>'t250','t600'=>'t600','t610'=>'t610','t618'=>'t618','tcl-'=>'tcl-','tdg-'=>'tdg-','telm'=>'telm','tim-'=>'tim-','ts70'=>'ts70','tsm-'=>'tsm-','tsm3'=>'tsm3','tsm5'=>'tsm5','tx-9'=>'tx-9','tagt'=>'tagt','talk'=>'talk','teli'=>'teli','topl'=>'topl','hiba'=>'hiba','up.b'=>'up.b','upg1'=>'upg1','utst'=>'utst','v400'=>'v400','v750'=>'v750','veri'=>'veri','vk-v'=>'vk-v','vk40'=>'vk40','vk50'=>'vk50','vk52'=>'vk52','vk53'=>'vk53','vm40'=>'vm40','vx98'=>'vx98','virg'=>'virg','vite'=>'vite','voda'=>'voda','vulc'=>'vulc','w3c '=>'w3c ','w3c-'=>'w3c-','wapj'=>'wapj','wapp'=>'wapp','wapu'=>'wapu','wapm'=>'wapm','wig '=>'wig ','wapi'=>'wapi','wapr'=>'wapr','wapv'=>'wapv','wapy'=>'wapy','wapa'=>'wapa','waps'=>'waps','wapt'=>'wapt','winc'=>'winc','winw'=>'winw','wonu'=>'wonu','x700'=>'x700','xda2'=>'xda2','xdag'=>'xdag','yas-'=>'yas-','your'=>'your','zte-'=>'zte-','zeto'=>'zeto','acs-'=>'acs-','alav'=>'alav','alca'=>'alca','amoi'=>'amoi','aste'=>'aste','audi'=>'audi','avan'=>'avan','benq'=>'benq','bird'=>'bird','blac'=>'blac','blaz'=>'blaz','brew'=>'brew','brvw'=>'brvw','bumb'=>'bumb','ccwa'=>'ccwa','cell'=>'cell','cldc'=>'cldc','cmd-'=>'cmd-','dang'=>'dang','doco'=>'doco','eml2'=>'eml2','eric'=>'eric','fetc'=>'fetc','hipt'=>'hipt','http'=>'http','ibro'=>'ibro','idea'=>'idea','ikom'=>'ikom','inno'=>'inno','ipaq'=>'ipaq','jbro'=>'jbro','jemu'=>'jemu','java'=>'java','jigs'=>'jigs','kddi'=>'kddi','keji'=>'keji','kyoc'=>'kyoc','kyok'=>'kyok','leno'=>'leno','lg-c'=>'lg-c','lg-d'=>'lg-d','lg-g'=>'lg-g','lge-'=>'lge-','libw'=>'libw','m-cr'=>'m-cr','maui'=>'maui','maxo'=>'maxo','midp'=>'midp','mits'=>'mits','mmef'=>'mmef','mobi'=>'mobi','mot-'=>'mot-','moto'=>'moto','mwbp'=>'mwbp','mywa'=>'mywa','nec-'=>'nec-','newt'=>'newt','nok6'=>'nok6','noki'=>'noki','o2im'=>'o2im','opwv'=>'opwv','palm'=>'palm','pana'=>'pana','pant'=>'pant','pdxg'=>'pdxg','phil'=>'phil','play'=>'play','pluc'=>'pluc','port'=>'port','prox'=>'prox','qtek'=>'qtek','qwap'=>'qwap','rozo'=>'rozo','sage'=>'sage','sama'=>'sama','sams'=>'sams','sany'=>'sany','sch-'=>'sch-','sec-'=>'sec-','send'=>'send','seri'=>'seri','sgh-'=>'sgh-','shar'=>'shar','sie-'=>'sie-','siem'=>'siem','smal'=>'smal','smar'=>'smar','sony'=>'sony','sph-'=>'sph-','symb'=>'symb','t-mo'=>'t-mo','teli'=>'teli','tim-'=>'tim-','tosh'=>'tosh','treo'=>'treo','tsm-'=>'tsm-','upg1'=>'upg1','upsi'=>'upsi','vk-v'=>'vk-v','voda'=>'voda','vx52'=>'vx52','vx53'=>'vx53','vx60'=>'vx60','vx61'=>'vx61','vx70'=>'vx70','vx80'=>'vx80','vx81'=>'vx81','vx83'=>'vx83','vx85'=>'vx85','wap-'=>'wap-','wapa'=>'wapa','wapi'=>'wapi','wapp'=>'wapp','wapr'=>'wapr','webc'=>'webc','whit'=>'whit','winw'=>'winw','wmlb'=>'wmlb','xda-'=>'xda-',)));// check against a list of trimmed user agents to see if we find a match

083$mobile_browser= true;// set mobile browser to true

084$status='Mobile matched on in_array';

085break;// break even though it's the last statement in the switch so there's nothing to break away from but it seems better to include it than exclude it

086

087default;

088$mobile_browser= false;// set mobile browser to false

089$status='Desktop / full capability browser';

090break;// break even though it's the last statement in the switch so there's nothing to break away from but it seems better to include it than exclude it

091

092}// ends the switch

093

094// tell adaptation services (transcoders and proxies) to not alter the content based on user agent as it's already being managed by this script, some of them suck though and will disregard this....

095// header('Cache-Control: no-transform'); // http://mobiforge.com/developing/story/setting-http-headers-advise-transcoding-proxies

096// header('Vary: User-Agent, Accept'); // http://mobiforge.com/developing/story/setting-http-headers-advise-transcoding-proxies

097

098// if redirect (either the value of the mobile or desktop redirect depending on the value of $mobile_browser) is true redirect else we return the status of $mobile_browser

099if($redirect= ($mobile_browser==true) ?$mobileredirect:$desktopredirect){

100header('Location: '.$redirect);// redirect to the right url for this device

101exit;

102}else{

103// a couple of folkas have asked about the status - that's there to help you debug and understand what the script. is doing

104if($mobile_browser==''){

105return$mobile_browser;// will return either true or false

106}else{

107returnarray($mobile_browser,$status);// is a mobile so we are returning an array ['0'] is true ['1'] is the $status value

108}

109}

110

111}// ends function mobile_device_detect

112

113?>

调用代码:

view source

1include('mobile_device_detect.php');

2mobile_device_detect(false,true,true,'m/index.php',false);

相关文章

复活节资料大全

复活节(Easter Day)是西方国家的一个盛大的节日,但复活节没有固定的日期,一般在每年春分后月圆时的第一个星期日,即约在3月21日左右。2016年的复活节为3月27日。复活节的由来法语 Paqu...
资料大全2011-08-03
复活节资料大全

初中历史教学计划

为了更好的抓好初中历史教学工作任务,全面推进素质教育,本学期除传授学生应该掌握的基础知识外,还向学生进行爱国主义等其他思想品德教育。下面是小编整理的初中历史教学计划,希望对你有帮助!初中历史教学计划(...
资料大全2018-01-06
初中历史教学计划

清晨唯美图片

清晨的美丽真是让人很心动,我都在感叹大自然的神奇,有这般让人陶醉的景色。以下是清晨唯美图片,欢迎阅读。NO1、 清晨,刚打开窗户,一股新鲜空气迎面扑来。伴随着一缕缕金色的光芒,太阳出来了,露出了慈祥的...
资料大全2015-04-06
清晨唯美图片

13 景阳冈

一、素质教育目标 (一)知识教学点 1.生字:晌、恰、岂、误、梁、哮、酥。 2.新词:晌午、恰当、岂不、请勿自误、脊梁、咆哮、酥软。 3.理解重点句、理清文章的叙述顺序。 (二)...
资料大全2016-08-06
13 景阳冈

上海工资扣税标准

2016年上海工资扣税标准多少?相关的扣税标准的政策与计算方法是怎么样的?以下是PINCAI小编为大家收集了相关资料,供大家参考!一、2016年上海工资扣税标准2016年上海工资扣除标准3500元/月...
资料大全2015-02-09
上海工资扣税标准

运动会开幕式入场创意方案

为了确保事情或工作有效开展,往往需要预先进行方案制定工作,方案是阐明具体行动的时间,地点,目的,预期效果,预算及方法等的企划案。那么什么样的方案才是好的呢?以下是小编为大家整理的运动会开幕式入场创意方...
资料大全2013-09-03
运动会开幕式入场创意方案