织梦DedeCMS添加变量报错Request var not allow!的解决办法 BIOS

admin 2017-06-02 5700

在DEDE根目录打开 include/common.inc.php 文件,查找到以下内容:

    //检查和注册外部提交的变量   (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|_GET|_POST|_COOKIE|_SESSION)#',$val)  )

            {

                exit('请求变量不允许!');

            }

        }

    }


更改为下面的代码,或者插入红色标注的代码(有2处需要修改)


    //检查和注册外部提交的变量   (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|_SESSION)#',$val)  )

            {

                exit('请求变量不允许!');

            }

        }

    }

代码范例:


dede织梦 不能添加新变量 变量名不能为空并且必须为[a-z_]组成!


//增加新变量

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) ) //红色标注的是新增加的

    {

        ShowMsg("变量名不能为空并且必须为[a-z_]组成!","-1");

        exit();

    }

    $row = $dsql->GetOne("SELECT varname FROM `#@__sysconfig` WHERE varname LIKE '$nvarname' ");

    if(is_array($row))

    {

        ShowMsg("该变量名称已经存在!","-1");

        exit();

    }


最新回复 (0)
全部楼主
    • MSDN,我告诉你(中文站)
      2
        登录 注册 获取赞助码
返回