论坛上很多人都反馈说在后台添加新变量的时候会出现 "Request var not allow!" 的BUG错误.本文主要就是介绍如何去解决这个问题!下面看具体操纵:
在DEDE根目录打开 include/common.inc.php 文件,查找到以下内容(大约59行):
注意:此解决办法针对以前的版本,精确到哪个版本之前未考证,最新的版本v5.7已修订以下内容(2011.8.10),并有更多判断,在本文下方,会给出相关说明。
//检查和注册外部提交的变量 function CheckRequest(&$val) { if (is_array($val)) { foreach ($val as $_k=>$_v) { CheckRequest($_k); CheckRequest($val[$_k]); } } else{ if( strlen($val)>0 && preg_match('#^(cfg_|GLOBALS)#',$val) ) { exit('Request var not allow!'); } } }
将以上内容替换成以下内容:
//检查和注册外部提交的变量 function CheckRequest(&$val) { if (is_array($val)) { foreach ($val as $_k=>$_v) { if($_k == 'nvarname') continue; CheckRequest($_k); CheckRequest($val[$_k]); } } else{ if( strlen($val)>0 && preg_match('#^(cfg_|GLOBALS)#',$val) ) { exit('Request var not allow!'); } } }
修改完了之后保存,再去后台试试添加新变量.以上内容转自dede论坛,以下内容为北京网站建设更新。
(此为2011.11.24更新)最新的版本(截止到2011.11.11的v5.7版)也可能出现"Request var not allow!" 的问题,下面请看代码:
//检查和注册外部提交的变量 (2011.8.10 修改登录时相关过滤)
function CheckRequest(&$val) {
if (is_array($val)) {
foreach ($val as $_k=>$_v) {
if($_k == 'nvarname') continue;
CheckRequest($_k);
CheckRequest($val[$_k]);
}
} else
{
if( strlen($val)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE)#',$val) )
{
exit('Request var not allow!');
}
}
}
我所做的修改是因为添加新变量使用了以cfg_开头的,所以导致出现"Request var not allow!" 的问题,新版的dedecms系统默认是限制了添加cfg_|GLOBALS|_GET|_POST|_COOKIE开头的变量的(^代表以后面的字符开头的字段),看上面的代码就非常清楚原因了啊
关键字:dede(3)
本站文章均有北京网站建设原创,转载请注明出处,文章地址:http://www.25ysj.com/jzzhishi/423.html