php判断是否手机浏览器访问_php判断手机还是电脑
程序员文章站
2021-12-02 19:47:35
...
由于我的博客是采用响应式布局的、难免会遇到需要判断是手机用户还是电脑用户、其实我的博客关于响应式的功能已经奶不错了、但是因为百度广告还没有推出响应式的功能、那么在手机访问的时候如果要显示百度广告、体验会很差、所有为响应式做的努力都白费了、下面我们找到判断为手机用户php代码分享给大家
方法一
<?php function isMobile(){ $useragent=isset($_SERVER[´HTTP_USER_AGENT´]) ? $_SERVER[´HTTP_USER_AGENT´] : ´´; $useragent_commentsblock=preg_match(´|(.*?)| ´,$useragent,$matches)>0?$matches[0]:´´; function CheckSubstrs($substrs,$text){ foreach($substrs as $substr) if(false!==strpos($text,$substr)){ return true; } return false; } $mobile_os_list=array(´Google Wireless Transcoder´,´Windows CE´, ´WindowsCE´,´Symbian´,´Android´,´armv6l´,´armv5´,´Mobile´, ´CentOS´,´mowser´,´AvantGo´,´Opera Mobi´,´J2ME/MIDP´, ´Smartphone´,´Go.Web´,´Palm´,´iPAQ´); $mobile_token_list=array(´Profile/MIDP´,´Configuration/CLDC-´, ´160×160´,´176×220´,´240×240´,´240×320´,´320×240´,´UP.Browser´, ´UP.Link´,´SymbianOS´,´PalmOS´,´PocketPC´,´SonyEricsson´, ´Nokia´,´BlackBerry´,´Vodafone´,´BenQ´,´Novarra-Vision´, ´Iris´,´NetFront´,´HTC_´,´Xda_´,´SAMSUNG-SGH´,´Wapaka´, ´DoCoMo´,´iPhone´,´iPod´); $found_mobile=CheckSubstrs($mobile_os_list,$useragent_commentsblock) || CheckSubstrs($mobile_token_list,$useragent); if ($found_mobile){ return true; }else{ return false; } } if (isMobile()) echo ´手机访问 DD博客´; else echo ´电脑访问 DD博客´; ?>
方法二
function is_mobile_request() { $_SERVER[´ALL_HTTP´] = isset($_SERVER[´ALL_HTTP´]) ? $_SERVER[´ALL_HTTP´] : ´´; $mobile_browser = ´0´; if(preg_match(´/(up.browser|up.link|mmp|symbian|smartphone| midp|wap|phone|iphone|ipad|ipod|android|xoom)/i´, strtolower($_SERVER[´HTTP_USER_AGENT´]))) $mobile_browser ; if((isset($_SERVER[´HTTP_ACCEPT´])) and (strpos(strtolower( $_SERVER[´HTTP_ACCEPT´]),´application/vnd.wap.xhtml xml´) !== false)) $mobile_browser ; if(isset($_SERVER[´HTTP_X_WAP_PROFILE´])) $mobile_browser ; if(isset($_SERVER[´HTTP_PROFILE´])) $mobile_browser ; $mobile_ua = strtolower(substr($_SERVER[´HTTP_USER_AGENT´],0,4)); $mobile_agents = array( ´w3c ´,´acs-´,´alav´,´alca´,´amoi´,´audi´,´avan´,´benq´,´bird´,´blac´, ´blaz´,´brew´,´cell´,´cldc´,´cmd-´,´dang´,´doco´,´eric´,´hipt´,´inno´, ´ipaq´,´java´,´jigs´,´kddi´,´keji´,´leno´,´lg-c´,´lg-d´,´lg-g´,´lge-´, ´maui´,´maxo´,´midp´,´mits´,´mmef´,´mobi´,´mot-´,´moto´,´mwbp´,´nec-´, ´newt´,´noki´,´oper´,´palm´,´pana´,´pant´,´phil´,´play´,´port´,´prox´, ´qwap´,´sage´,´sams´,´sany´,´sch-´,´sec-´,´send´,´seri´,´sgh-´,´shar´, ´sie-´,´siem´,´smal´,´smar´,´sony´,´sph-´,´symb´,´t-mo´,´teli´,´tim-´, ´tosh´,´tsm-´,´upg1´,´upsi´,´vk-v´,´voda´,´wap-´,´wapa´,´wapi´,´wapp´, ´wapr´,´webc´,´winw´,´winw´,´xda´,´xda-´ ); if(in_array($mobile_ua, $mobile_agents)) $mobile_browser ; if(strpos(strtolower($_SERVER[´ALL_HTTP´]), ´operamini´) !== false) $mobile_browser ; // Pre-final check to reset everything if the user is on Windows if(strpos(strtolower($_SERVER[´HTTP_USER_AGENT´]), ´windows´) !== false) $mobile_browser=0; // But WP7 is also Windows, with a slightly different characteristic if(strpos(strtolower($_SERVER[´HTTP_USER_AGENT´]), ´windows phone´) !== false) $mobile_browser ; if($mobile_browser>0) return true; else return false; }
这两种方法我都亲测过、没有问题的、希望对大家有用