在DEDE(织梦CMS)后台添加新变量时,出现“Request var not allow!”的错误提示是一个常见的问题,这个错误通常是由于系统对外部提交的变量进行了严格的检查和过滤导致的,以下是详细的解决办法:
问题描述
在DEDE后台添加新变量时,如果遇到“Request var not allow!”的错误提示,这通常意味着你尝试添加的变量名或值不符合系统的安全策略,DEDE为了防止恶意代码注入或其他安全问题,会对外部提交的变量进行严格的检查和过滤。
解决办法
1. 修改include/common.inc.php文件
找到DEDE根目录下的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!”的错误提示了。
2. 注意变量命名规则
在添加新变量时,请确保变量名符合DEDE的命名规则,避免使用保留字或特殊字符,也要注意变量值的安全性,避免包含恶意代码或敏感信息。
3. 更新到最新版本
如果你使用的是较旧版本的DEDE,建议更新到最新版本,新版本可能已经修复了这个问题,或者提供了更好的解决方案。
FAQs
问题1:为什么修改include/common.inc.php文件可以解决问题?
答:修改include/common.inc.php
文件是为了绕过DEDE对外部提交变量的严格检查,通过在CheckRequest
函数中添加条件判断,我们可以允许特定的变量名(如nvarname
)通过检查,从而避免触发“Request var not allow!”的错误提示。
问题2:除了修改include/common.inc.php文件外,还有其他解决方案吗?
答:除了修改include/common.inc.php
文件外,还可以尝试更新到最新版本的DEDE,或者寻求官方技术支持,但需要注意的是,这些方法可能并不总是有效,因为具体问题可能因版本和环境而异。
问题3:修改include/common.inc.php文件是否会影响系统安全性?
答:修改include/common.inc.php
文件可能会降低系统的安全性,因为它绕过了原本用于保护系统的检查机制,在修改文件之前,请务必备份原始文件,并谨慎考虑修改的必要性和风险,如果可能的话,建议寻求专业人士的帮助和指导。
DEDE后台添加新变量出现 "Request var not allow!" 的解决办法
问题分析
在DEDE(织梦)后台添加新变量时,如果遇到 "Request var not allow!" 的提示,通常是因为尝试访问了不允许的变量或者变量名不符合系统要求。
解决步骤
1、检查变量名规范
确保变量名符合PHP的变量命名规则,即只能包含字母、数字和下划线,且第一个字符不能是数字。
变量名中不应包含特殊字符或空格。
2、确认变量是否允许
DEDE系统可能限制了某些变量的访问,确保你尝试访问的变量不是系统禁止的。
查阅DEDE官方文档或相关论坛,了解哪些变量是系统不允许访问的。
3、检查代码安全性
确保在代码中使用的变量没有安全问题,如SQL注入、XSS攻击等。
如果变量用于数据库操作,请确保对输入进行了适当的过滤和转义。
4、修改配置文件
打开DEDE后台的配置文件,通常位于/config/
目录下。
查找并修改相关的配置选项,确保没有禁止访问的设置。
5、更新系统
如果是旧版本的DEDE,尝试更新到最新版本,可能存在漏洞或限制在最新版本中已被修复。
6、检查模板文件
如果变量在模板文件中使用,检查模板文件是否有错误或不符合规范的代码。
7、咨询技术支持
如果以上步骤都无法解决问题,可以联系DEDE的技术支持或社区寻求帮助。
示例代码
以下是一个简单的示例,展示如何正确使用变量:
<?php // 正确的变量命名 $correctVar = "value"; // 错误的变量命名(不要使用) $incorrectVar1 = "value with space"; $incorrectVar2 = "value@with@special@chars"; ?>
遇到 "Request var not allow!" 的错误时,首先应检查变量名是否符合规范,然后确认变量是否被系统允许访问,如果问题依旧,可以尝试更新系统或寻求技术支持。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1122543.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复