公众账号

二维码 微信扫描关注

当前位置:艾立兹素材库 > 前端学院 > 前端答疑 >

织梦dedecms后台添加变量提示Request var not allow

织梦 include/common.inc.php 里的 CheckRequest 变量过滤函数,会拦截以 cfg_ 开头、GLOBALS 等关键字的外部提交变量;后台新增变量提交时的 nvarname 参数被遍历检查,触发正则匹配拦截,直接退出并提示 Request var not allow!

修复步骤(先备份原文件!)

  1. 打开文件:include/common.inc.php,找到 CheckRequest 函数原始代码
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!');
}
}
}
  1. 修改数组遍历部分,增加 nvarname 跳过判断:
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!');
}
}
}
  1. 保存文件,上传覆盖,清除浏览器缓存,重新进入后台添加变量即可正常提交

补充说明

  • 本质是针对性跳过后台新增变量提交的 nvarname 参数检查,不改动整体安全过滤规则,相比直接删除 / 修改正则更安全
  • 不要直接乱改正则匹配语句,会造成网站安全隐患
  • 新增自定义变量时,变量名本身仍遵循规范(可正常用 cfg_前缀),仅放行提交参数本身的校验遍历
  • 若修改后仍异常:确认编码为 UTF-8 无 BOM 格式、检查是否存在其他版本 / 缓存文件

验证

修改完成后进入织梦后台:系统 → 系统基本参数 → 添加新变量,即可正常保存,不再报错

完整伪静态配置、后台报错修复、二次开发教程,请到技术主站查: 艾立兹站 aliz.cn
上一篇:没有了 下一篇:没有了
本文作者2026-07-27
aliz.cn
被关注0 阅读 回复0
关于 商务 项目 联系 友情链接网站地图 Copyright © 2020- 艾立兹素材库 All Rights Reserved | 主站:艾立兹站 aliz.cn| (http://www.alisucai.com)