发现了Dispatcher.class.php的一个bug

浏览:1196 发布日期:2011/12/05
- 普通 - 未处理
第131行 //define('__URL__',!empty($domainModule)?__GROUP__.$depr : __GROUP__.$depr.$module);
//上面一行有bug,当__GROUP__是DEFAULT_GROUP的时候,而且$depr不为'/'就会出错,改为下面一行
if( GROUP_NAME == C('DEFAULT_GROUP')){

define('__URL__',!empty($domainModule)?__GROUP__.$depr : __GROUP__.$module);
}else{

define('__URL__',!empty($domainModule)?__GROUP__.$depr : __GROUP__.$depr.$module);
}


如果是在默认的分组下面,分组名就给忽略了,这种情况下$depr为‘/’不会出错,但是要是‘-’就会在每一个$module前面加一个‘-’,本来URL应该是www.youdaomain.com/news-shownews-id-8的,就会变成www.youdaomain.com/-news-shownews-id-8就出错了
我给改成了 define('__GROUP__',(!empty($domainGroup) || GROUP_NAME == C('DEFAULT_GROUP') )?__APP__ : __APP__.'/'.$group);
//define('__URL__',!empty($domainModule)?__GROUP__.$depr : __GROUP__.$depr.$module);
//上面一行有bug,当__GROUP__是DEFAULT_GROUP的时候,而且$depr不为'/'就会出错,改为下面一行
if( GROUP_NAME == C('DEFAULT_GROUP')){

define('__URL__',!empty($domainModule)?__GROUP__.$depr : __GROUP__.$module);
}else{

define('__URL__',!empty($domainModule)?__GROUP__.$depr : __GROUP__.$depr.$module);
}


这样改了以后暂时不会出问题,但是我不了解,!empty($domainModule)?__GROUP__.$depr是起什么作用的,不知道这种情况下还会不会出错,我只测试了!empty($domainModule)?__GROUP__.$depr : __GROUP__.$module冒号以后的部分。希望官方尽快推出最终解决方案
评论(
后面还有条评论,点击查看>>