Advertisement
baeltaezaer

mobile_detect

Jul 25th, 2012
822
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 21.20 KB | None | 0 0
  1. <?php
  2.  
  3. /*
  4.  
  5.   This code is from http://detectmobilebrowsers.mobi/ - please do not republish it without due credit and hyperlink to http://detectmobilebrowsers.mobi/ really, i'd prefer it if it wasn't republished in full as that way it's main source is it's homepage and it's always kept up to date
  6.  
  7.   For help generating the function call visit http://detectmobilebrowsers.mobi/ and use the function generator. If you need serious help with this please drop me an email to andy@andymoore.info with the subject 'DETECTION CODE PAID SUPPORT REUQEST' with a detailed outline of what you need and how I can help and I will get back to you with a proposal for integration.
  8.  
  9.   Published by Andy Moore - .mobi certified mobile web developer - http://andymoore.info/
  10.  
  11.   This code is free to download and use on non-profit websites, if your website makes a profit or you require support using this code please upgrade.
  12.  
  13.   Please upgrade for use on commercial websites http://detectmobilebrowsers.mobi/?volume=49999
  14.  
  15.   To submit a support request please forward your PayPal receipt with your questions to the email address you sent the money to and I will endeavour to get back to you. It might take me a few days but I reply to all support issues with as much helpful info as I can provide. Though really everything is published on the site.
  16.  
  17.   The function has eight parameters that can be passed to it which define the way it handles different scenarios. These paramaters are:
  18.  
  19.     * iPhone - Set to true to treat iPhones as mobiles, false to treat them like full browsers or set a URL (including http://) to redirect iPhones and iPods to.
  20.     * Android - Set to true to treat Android handsets as mobiles, false to treat them like full browsers or set a URL (including http://) to redirect Android and Google mobile users to.
  21.     * Opera Mini - Set to true to treat Opera Mini like a mobile, false to treat it like full browser or set a URL (including http://) to redirect Opera Mini users to.
  22.     * Blackberry - Set to true to treat Blackberry like a mobile, false to treat it like full browser or set a URL (including http://) to redirect Blackberry users to.
  23.     * Palm - Set to true to treat Palm OS like a mobile, false to treat it like full browser or set a URL (including http://) to redirect Palm OS users to.
  24.     * Windows - Set to true to treat Windows Mobiles like a mobile, false to treat it like full browser or set a URL (including http://) to redirect Windows Mobile users to.
  25.     * Mobile Redirect URL - This should be full web address (including http://) of the site (or page) you want to send mobile visitors to. Leaving this blank will make the script return true when it detects a mobile.
  26.     * Desktop Redirect URL - This should be full web address (including http://) of the site (or page) you want to send non-mobile visitors to. Leaving this blank will make the script return false when it fails to detect a mobile.
  27.  
  28. Change Log:
  29.  
  30.     * 25.11.08 - Added Amazon's Kindle to the pipe seperated array
  31.     * 27.11.08 - Added support for Blackberry options
  32.     * 27.01.09 - Added usage samples & help with PHP in HTML - .zip
  33.     * 09.03.09 - Added support for Windows Mobile options
  34.     * 09.03.09 - Removed 'ppc;'=>'ppc;', from array to reduce false positives
  35.     * 09.03.09 - Added support for Palm OS options
  36.     * 09.03.09 - Added sample .htaccess html.html and help.html files to download
  37.     * 16.03.09 - Edited sample .htaccess file - now works with GoDaddy
  38.     * 14.08.09 - Reduced false positives
  39.     * 14.08.09 - Added Palm Pre
  40.     * 14.08.09 - Added answer about search engine spiders
  41.     * 14.08.09 - Added status variable to report back it's findings for debugging
  42.     * 14.08.09 - Added Torch Mobile Iris Browser to Windows Mobile section
  43.     * 14.08.09 - Added HTC Touch 3G to Windows Mobile section
  44.     * 14.08.09 - Added help links to PHP header and setup PHP in HTML
  45.     * 14.08.09 - Added six usage examples
  46.     * 15.08.09 - Checked against the list of agents in the WURFL - 99.27% detected!
  47.           o 11,489 mobile user agent strings checked
  48.           o 99.27% detection rate after a number of small changes
  49.           o Those user agent strings listed that are not detected are either robots or too generic for user agent detection
  50.           o Any mobiles not detected by their user agent would most likely return true as they'd be detected by the headers they add.
  51.     * 20.11.09 - Removed PDA from the piped array to stop false positives
  52.     * 22.12.09 - Moved the site to a server hosted at Rackspace
  53.     * 23.12.09 - Added support for Mozilla Fennec
  54.     * 23.04.10 - Added support for the Apple iPad
  55.           o Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10
  56.           o Mozilla/5.0 (iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7D11
  57.           o Mozilla/5.0 (iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B317 Safari/531.21.10
  58.     * 23.04.10 - Changed all eregi function calls to preg_match
  59.     * 23.04.10 - Added two more examples
  60.           o Added example-7.php which allows switching between desktop and mobile versions
  61.           o Added example-8.php which shows why the script made the decision it did
  62.     * No longer using include, using require_once instead
  63.  
  64. bug fixes with many thanks and much credit to http://www.punchkickinteractive.com/ - thanks Ryan!
  65.  
  66. */
  67.  
  68. function mobile_device_detect($iphone=true,$ipad=true,$android=true,$opera=true,$blackberry=true,$palm=true,$windows=true,$mobileredirect=false,$desktopredirect=false){
  69.  
  70.   $mobile_browser   = false; // set mobile browser as false till we can prove otherwise
  71.   $user_agent       = $_SERVER['HTTP_USER_AGENT']; // get the user agent value - this should be cleaned to ensure no nefarious input gets executed
  72.   $accept           = $_SERVER['HTTP_ACCEPT']; // get the content accept value - this should be cleaned to ensure no nefarious input gets executed
  73.  
  74.   switch(true){ // using a switch against the following statements which could return true is more efficient than the previous method of using if statements
  75.  
  76.     case (preg_match('/ipad/i',$user_agent)); // we find the word ipad in the user agent
  77.       $mobile_browser = $ipad; // mobile browser is either true or false depending on the setting of ipad when calling the function
  78.       $status = 'Apple iPad';
  79.       if(substr($ipad,0,4)=='http'){ // does the value of ipad resemble a url
  80.         $mobileredirect = $ipad; // set the mobile redirect url to the url value stored in the ipad value
  81.       } // ends the if for ipad being a url
  82.     break; // 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
  83.  
  84.     case (preg_match('/ipod/i',$user_agent)||preg_match('/iphone/i',$user_agent)); // we find the words iphone or ipod in the user agent
  85.       $mobile_browser = $iphone; // mobile browser is either true or false depending on the setting of iphone when calling the function
  86.       $status = 'Apple';
  87.       if(substr($iphone,0,4)=='http'){ // does the value of iphone resemble a url
  88.         $mobileredirect = $iphone; // set the mobile redirect url to the url value stored in the iphone value
  89.       } // ends the if for iphone being a url
  90.     break; // break out and skip the rest if we've had a match on the iphone or ipod
  91.  
  92.     case (preg_match('/android/i',$user_agent));  // we find android in the user agent
  93.       $mobile_browser = $android; // mobile browser is either true or false depending on the setting of android when calling the function
  94.       $status = 'Android';
  95.       if(substr($android,0,4)=='http'){ // does the value of android resemble a url
  96.         $mobileredirect = $android; // set the mobile redirect url to the url value stored in the android value
  97.       } // ends the if for android being a url
  98.     break; // break out and skip the rest if we've had a match on android
  99.  
  100.     case (preg_match('/opera mini/i',$user_agent)); // we find opera mini in the user agent
  101.       $mobile_browser = $opera; // mobile browser is either true or false depending on the setting of opera when calling the function
  102.       $status = 'Opera';
  103.       if(substr($opera,0,4)=='http'){ // does the value of opera resemble a rul
  104.         $mobileredirect = $opera; // set the mobile redirect url to the url value stored in the opera value
  105.       } // ends the if for opera being a url
  106.     break; // break out and skip the rest if we've had a match on opera
  107.  
  108.     case (preg_match('/blackberry/i',$user_agent)); // we find blackberry in the user agent
  109.       $mobile_browser = $blackberry; // mobile browser is either true or false depending on the setting of blackberry when calling the function
  110.       $status = 'Blackberry';
  111.       if(substr($blackberry,0,4)=='http'){ // does the value of blackberry resemble a rul
  112.         $mobileredirect = $blackberry; // set the mobile redirect url to the url value stored in the blackberry value
  113.       } // ends the if for blackberry being a url
  114.     break; // break out and skip the rest if we've had a match on blackberry
  115.  
  116.     case (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
  117.       $mobile_browser = $palm; // mobile browser is either true or false depending on the setting of palm when calling the function
  118.       $status = 'Palm';
  119.       if(substr($palm,0,4)=='http'){ // does the value of palm resemble a rul
  120.         $mobileredirect = $palm; // set the mobile redirect url to the url value stored in the palm value
  121.       } // ends the if for palm being a url
  122.     break; // break out and skip the rest if we've had a match on palm os
  123.  
  124.     case (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
  125.       $mobile_browser = $windows; // mobile browser is either true or false depending on the setting of windows when calling the function
  126.       $status = 'Windows Smartphone';
  127.       if(substr($windows,0,4)=='http'){ // does the value of windows resemble a rul
  128.         $mobileredirect = $windows; // set the mobile redirect url to the url value stored in the windows value
  129.       } // ends the if for windows being a url
  130.     break; // break out and skip the rest if we've had a match on windows
  131.  
  132.     case (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
  133.       $mobile_browser = true; // set mobile browser to true
  134.       $status = 'Mobile matched on piped preg_match';
  135.     break; // break out and skip the rest if we've preg_match on the user agent returned true
  136.  
  137.     case ((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
  138.       $mobile_browser = true; // set mobile browser to true
  139.       $status = 'Mobile matched on content accept header';
  140.     break; // break out and skip the rest if we've had a match on the content accept headers
  141.  
  142.     case (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
  143.       $mobile_browser = true; // set mobile browser to true
  144.       $status = 'Mobile matched on profile headers being set';
  145.     break; // break out and skip the final step if we've had a return true on the mobile specfic headers
  146.  
  147.     case (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','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
  148.       $mobile_browser = true; // set mobile browser to true
  149.       $status = 'Mobile matched on in_array';
  150.     break; // 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
  151.  
  152.     default;
  153.       $mobile_browser = false; // set mobile browser to false
  154.       $status = 'Desktop / full capability browser';
  155.     break; // 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
  156.  
  157.   } // ends the switch
  158.  
  159.   // 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....
  160.     // header('Cache-Control: no-transform'); // http://mobiforge.com/developing/story/setting-http-headers-advise-transcoding-proxies
  161.     // header('Vary: User-Agent, Accept'); // http://mobiforge.com/developing/story/setting-http-headers-advise-transcoding-proxies
  162.  
  163.   // 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
  164.   if($redirect = ($mobile_browser==true) ? $mobileredirect : $desktopredirect){
  165.     header('Location: '.$redirect); // redirect to the right url for this device
  166.     exit;
  167.   }else{
  168.         // a couple of folkas have asked about the status - that's there to help you debug and understand what the script is doing
  169.         if($mobile_browser==''){
  170.             return $mobile_browser; // will return either true or false
  171.         }else{
  172.             return array($mobile_browser,$status); // is a mobile so we are returning an array ['0'] is true ['1'] is the $status value
  173.         }
  174.     }
  175.  
  176. } // ends function mobile_device_detect
  177.  
  178. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement