完美解决dedecms新版参数设置无法添加新变量 Request var not allow

官方7.5 的 0814 版。今天发现添加新变量的时候,首先出现: “Request var not allow!” 这个还不是重要的。这个问题解决以后,
接着又出现了:变量名不能为空并且必须为[a-z_]组成!
网上找了很多个解决方案,基本上都是一样的,说的是 include/common.inc.php 替换一段代码。但可能只适用以有的版本。总之没有成功。。。
话说,其实,问题不是出在Includ/common.inc.php
那是因为Includ/common.inc.php里面规定了。不充许创建cfg_开头的。那我们创建其它开头的就可以了。建议最好不要去修改那个配置文件,为了安全起见。
例如我的:cf_add 就是医院的地址,这样就可以了。下一个比如电话,QQ这些,你可以自定义。例如:yiyuan_tel
只要你模版调用的时候:医院地址:{dede:global.cf_add/} 记得填写正确就OK了
但是紧接着问题来了。其实你跟本走不到这一步,因为你添加了变量以后 会显示   变量名不能为空并且必须为[a-z_]组成!
其实你要先解决下面的问题,然后再回头添加变量就OK了。总之有点儿让人搞不清状况!
好吧。在网上找的时候我发现以前的老版本貌似都可以添加的哦。那就。。。下载个老版本的。打开  /dede/sys_info.php
主要是这样一段话。
解决办法:

老版本的:

//增加新变量

else if($dopost=='add')

{

        if($vartype=='bool' && ($nvarvalue!='Y' && $nvarvalue!='N'))

        {

                ShowMsg("布尔变量值必须为'Y'或'N'!","-1");

                exit();

        }

        if(trim($nvarname)=='' || eregi('[^a-z_]', $nvarname) )

新版本的:

//增加新变量

else if($dopost=='add')

{

    if($vartype=='bool' && ($nvarvalue!='Y' && $nvarvalue!='N'))

    {

        ShowMsg("布尔变量值必须为'Y'或'N'!","-1");

        exit();

    }

    if(trim($nvarname)=='' || preg_match("#[^a-z_]#i", $nvarname))

对比发现问题以后,(PS:反正我也不懂代码,究竟是不是BUG,我也不知道,反正我只知道以前的版本可以添加,现在的版本添加不了,就这么简单。至于高深NB的理论就交给大大们发言吧。)
将新版的这句话换成下面这句话。就是有个地方,应该是PUG,代码里面少了一个符号:^

//增加新变量

else if($dopost=='add')

{

    if($vartype=='bool' && ($nvarvalue!='Y' && $nvarvalue!='N'))

    {

        ShowMsg("布尔变量值必须为'Y'或'N'!","-1");

        exit();

    }

if(trim($nvarname)=='' || eregi("#^[^a-z_]#i", $nvarname))

就是第九行这句话:if(trim($nvarname)==” || eregi(“#^[^a-z_]#i”, $nvarname))
换成这句以后,保存,再回后台试一吧亲们。~~

已测试完美无误!!

相关文章

发表评论 取消回复

很抱歉,您暂时无法发布评论。需要 登录 后才能发布。