很多朋友都反馈说在织梦dedecms后台添加新变量的时候会出现 "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!');
}
}
}
修改完了之后保存,再去后台试试添加新变量.以下内容为建站吧更新。
(此为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!');
}
}
}
找到:根目录->include->common.inc.php
if( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE)#',$svar) )
官方是不是大意了,写成了“如果添加的变量名长度大于零”就返回错误
只要把“>”改成“<”即可解决问题
一共需要修改两处:第74行和96行
欢迎使用微视媒-源码测试 经验教程 小程序源码 设计资源, 该资源来自用户分享,如果损害了你的权利,请提交站内信由技术处理。
1:此资源为内部分享交流,仅供学习参考借鉴使用,请勿用于其他用途。请以学习技术参考理念为目的使用该资源,如果想商用,请自行联系版权方获取授权后使用。任何未获取授权的商业使用与本站无关,请自行承担相应责任。
2:本站所有资源仅供技术人员研究学习使用,本站不存储任何资源文件!
3:本站信息若非特殊注明均为会员搜集发布,本站不对资源提供任何技术支持,请自行研究学习。
4:本站客服仅对站点使用提供咨询解答,不涉及任何资源内容信息。
5:本站不销售任何资源,我们仅提供技术交流分享服务。
6:如果此资源信息对你的权益造成困扰,请提交站内信由技术处理,我们会及时处理相关信息并且通知相关会员。