在Dedecms CMS中,当您尝试为网站模型添加变量时,可能会遇到“Request var not allow!”的错误提示。这一问题通常出现在添加新变量的过程中,本文将为您详细讲解如何解决这一问题。 首先,要解决这个问题,您需要打开Dedecms的根目录下的`include/common.inc.php`文件。
在这里,我们需要找到一段特定的代码,这段代码的功能是检查和注册外部提交的变量。以下是原始代码的内容:

// 检查和注册外部提交的变量
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!');
        }
    }
}
    
通过上述修改,您可以成功绕过“Request var not allow!”错误。具体来说,我们在foreach循环中增加了一个判断条件:如果键名等于'nvarname',则跳过该次循环。这样可以确保新增变量不会触发安全检查机制中的限制。 最后,保存文件并重新加载您的Dedecms后台页面,此时应该能够正常添加新变量而不再出现错误提示。 总结一下,解决Dedecms中“Request var not allow!”错误的关键在于修改`common.inc.php`文件中的`CheckRequest`函数逻辑。通过这样的调整,不仅可以让系统更加灵活,还能有效避免不必要的麻烦。希望这篇文章对您有所帮助!