zoukankan      html  css  js  c++  java
  • 【TP3.2.X】(同样适用于OT) 设置单入口index.php文件,区分PC/WAP/Wechat 三个终端

    1、目的:本教程适用于 OneThink1.0、或者TP3.2.X 系列,达到单入口index.php文件,区分PC/WAP/Wechat 三个终端

    2、启发至 : http://www.thinkphp.cn/code/3516.html           TP3.2官方论坛

     2.1)核心:defined('APP_STATUS')   or define('APP_STATUS',     ''); // 应用状态 加载对应的配置文件

      一定要明白,在TP3.2的核心框架里面,有个系统常量APP_STATUS,用来加载系统对应的配置文件

    3、上面只介绍了 手机端, 我自己还加入了微信端的判断 : 效果很好,亲测可用

    4、TP3.2.x判断手机端访问并设置默认访问模块的方法:

    手机端访问时调用Wap手机模块,实现在手机端访问时展示出手机网站,无需跳转域名
    首先我们在./Application/Common/Conf/ 目录下建立两个公共配置文件:config.php 和config_wap.php

    config.php 中:

    return array(
        'DEFAULT_MODULE'=>'Index',
        'DEFAULT_CONTROLLER'=>'Index',
        'DEFAULT_ACTION'=>'index',
    )

    config_wap.php 中:

    return array(
        'DEFAULT_MODULE'=>'Wap',
        'DEFAULT_CONTROLLER'=>'Index',
        'DEFAULT_ACTION'=>'index',
    )

    然后在入口文件 index.php 中加入手机端判断方法(建议放到最下面):

    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;
    }

    然后,我们开始用关键的APP_STATUS来调用不同的模块:
    在index.php文件中的21行后面也就是“定义应用目录”结束后,加入代码:

    其实,我们还可以在下面代码里面加入对微信浏览器的判断,然后加载微信模块的配置文件。

    if(is_mobile_request()){
        define('APP_STATUS','config_wap');
    }else{
        define('APP_STATUS','Index');
    }

    大功告成。
    参考文档:http://document.thinkphp.cn/manual_3_2.html#load_config

    5、以上代码,亲测有效。 

    6、另外附上: PC的chrome浏览器  伪装 成手机 普通浏览器和微信浏览器进行访问 本地项目,达到测试的目的。传送门:https://www.jb51.net/softjc/144941.html 

  • 相关阅读:
    Java代码中,如何监控Mysql的binlog?
    springcloud dashboard控制面板上的各项指标详解(图文并茂)
    matlab练习程序(图优化)
    C# class模板文件路径
    PostgreSQL安全加固
    linux下安装7z命令及7z命令的使用
    python中for......else......的使用
    docker端口映射或启动容器时报错 driver failed programming external connectivity on endpoint quirky_allen
    python:关于py文件之间相互import的问题
    nginx 80端口跳转到443
  • 原文地址:https://www.cnblogs.com/xuzhengzong/p/9163672.html
Copyright © 2011-2022 走看看