ThinkPHP 3.2.2 路由重写BUG ,修正方法

TP3.2.x问题真多,官网根本就不维护了,很多时候TP官网都根本无法下载TP。

一个很严重的BUG,网址重写无法支持原因ThinkPHP本来就根本执行顺序全错


解决方法:

文件:

#D:\PC\zbphp.com\ThinkPHP\Library\Think\Dispatcher.class.php


代码:(替换成下面的即可 by default7#zbphp.com)

        if(empty($_SERVER['PATH_INFO'])) {
            $_SERVER['PATH_INFO'] = '';
            define('__INFO__','');
            define('__EXT__','');
        }else{

            Route::check(); //add by default7#zbphp.com
            define('__INFO__',trim($_SERVER['PATH_INFO'],'/'));
            // URL后缀
            define('__EXT__', strtolower(pathinfo($_SERVER['PATH_INFO'],PATHINFO_EXTENSION)));
            $_SERVER['PATH_INFO'] = __INFO__;     
            if (__INFO__ && !defined('BIND_MODULE') && C('MULTI_MODULE') && empty($_GET)){ // 获取模块名
                $paths      =   explode($depr,__INFO__,2);
                $allowList  =   C('MODULE_ALLOW_LIST'); // 允许的模块列表
                $module     =   preg_replace('/\.' . __EXT__ . '$/i', '',$paths[0]);
                if( empty($allowList) || (is_array($allowList) && in_array_case($module, $allowList))){
                    $_GET[$varModule]       =   $module;
                    $_SERVER['PATH_INFO']   =   isset($paths[1])?$paths[1]:'';
                }
            }                   
        }



修正版:

        if(empty($_SERVER['PATH_INFO'])) {
            $_SERVER['PATH_INFO'] = '';
            define('__INFO__','');
            define('__EXT__','');
        }else{


            define('__INFO__',trim($_SERVER['PATH_INFO'],'/'));
            // URL后缀
            define('__EXT__', strtolower(pathinfo($_SERVER['PATH_INFO'],PATHINFO_EXTENSION)));
            $_SERVER['PATH_INFO'] = __INFO__;
            if (__INFO__ && !defined('BIND_MODULE') && C('MULTI_MODULE') && !Route::check() && !empty($_GET)){ // 获取模块名
                $paths      =   explode($depr,__INFO__,2);
                $allowList  =   C('MODULE_ALLOW_LIST'); // 允许的模块列表
                $module     =   preg_replace('/\.' . __EXT__ . '$/i', '',$paths[0]);
                if( empty($allowList) || (is_array($allowList) && in_array_case($module, $allowList))){
                    $_GET[$varModule]       =   $module;
                    $_SERVER['PATH_INFO']   =   isset($paths[1])?$paths[1]:'';
                }
            }                   
        }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值