目前访问页面的要切换成手机端和PC端,原理是经过对设备做出判断,显示不一样的功能和页面。css
若是手机端和PC端的功能结构不相同,通常会写两套系统,一套适用于PC端,一套适用于手机端。html
若是功能相同,则只须要更换模板。android
首先这是一套判断设备的代码。web
function ismobile() { // 若是有HTTP_X_WAP_PROFILE则必定是移动设备 if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) return true; //此条摘自TPM智能切换模板引擎,适合TPM开发 if(isset ($_SERVER['HTTP_CLIENT']) &&'PhoneClient'==$_SERVER['HTTP_CLIENT']) return true; //若是via信息含有wap则必定是移动设备,部分服务商会屏蔽该信息 if (isset ($_SERVER['HTTP_VIA'])) //找不到为flase,不然为true return stristr($_SERVER['HTTP_VIA'], 'wap') ? true : false; //判断手机发送的客户端标志,兼容性有待提升 if (isset ($_SERVER['HTTP_USER_AGENT'])) { $clientkeywords = array( 'nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile' ); //从HTTP_USER_AGENT中查找手机浏览器的关键字 if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) { return true; } } //协议法,由于有可能不许确,放到最后判断 if (isset ($_SERVER['HTTP_ACCEPT'])) { // 若是只支持wml而且不支持html那必定是移动设备 // 若是支持wml和html可是wml在html以前则是移动设备 if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) { return true; } } return false; }
这个函数用于判断设备类型是手机仍是PC。windows
把这个函数放到公共函数里,在自动加载的类方法里进行判断。浏览器
例如在TP框架下,我把这段函数放在公共的function里。框架
而后在基本控制器里判断,若是为手机端,则切换模板为手机主题。iphone
class IndexController extends BaseController { Public function _initialize(){ //移动设备浏览,则切换模板 if (ismobile()) { //设置默认默认主题为 Mobile C('DEFAULT_THEME','Mobile'); } //............你的更多代码....... } }
一样要更换功能则须要找到更底层的控制器进行判断。函数
这个方法不适用全部项目,可是原理如此。spa