PHP项目实现手机端和PC端的页面切换

目前访问页面的要切换成手机端和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

相关文章
相关标签/搜索