主要是判斷來自pc端,因為有些操作是必須在電腦上操作的,來自行動端的,隱藏部分功能。
助手類別如下:原理就是驗證header頭
<?php /** * Created by PhpStorm. * User: QQ: 1716771371 * oschina:http://git.oschina.net/zhaojunlike * github: http://github.com/zhaojunlike * Date: 2016/8/14 * Time: 8:55 */ namespace Common\Helper; class MobileHelper { static private $instance; public static function isMobile() { $_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; } }
Mobile_Detect是轻量级php库通过User-agent和特定的人Http頭部來判斷:
Mobile_Detect
php
User-agent
Http
雷雷
/** * 判断是否为手机访问 * @return boolean */ function sp_is_mobile() { static $sp_is_mobile; if ( isset($sp_is_mobile) ) return $sp_is_mobile; if ( empty($_SERVER['HTTP_USER_AGENT']) ) { $sp_is_mobile = false; } elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false // many mobile devices (all iPhone, iPad, etc.) || strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mobi') !== false ) { $sp_is_mobile = true; } else { $sp_is_mobile = false; } return $sp_is_mobile; } /** * 判断是否为微信访问 * @return boolean */ function sp_is_weixin(){ if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) { return true; } return false; }
當然,如果你還需要判斷安卓或ios的話,有一個簡單的方法,行動端自訂HTTP_USER_AGENT的值,然後從服務端取得$_SERVER['HTTP_USER_AGENT'],例如,增加一個my_webapp,判斷這個字元是否存在
$user_agent = $_SERVER['HTTP_USER_AGENT']; if (stripos($user_agent, 'my_webapp') !== false) { $this->assign("is_webapp", true); }
這個問題我在segment fault回答過,當時題主表示有效:/q/101...
助手類別如下:
原理就是驗證header頭
Mobile_Detect
是轻量级php
库通过User-agent
和特定的人Http
頭部來判斷:Mobile_Detect
雷雷
貼一下THINKcmf裡面的程式碼
當然,如果你還需要判斷安卓或ios的話,有一個簡單的方法,行動端自訂HTTP_USER_AGENT的值,然後從服務端取得$_SERVER['HTTP_USER_AGENT'],例如,增加一個my_webapp,判斷這個字元是否存在
這個問題我在segment fault回答過,當時題主表示有效:/q/101...