解决dedebiz系统设置参数带有“”等保存转义\被无限叠加问题
2025-04-14 20:53:01
SENxia.Me
A
+
A
-
SENxia.Me 2025-04-14 20:53:01 阅读

今天用dedebiz制作网站的时候发现系统设置带有“”保存被转义无限叠加bug,叠加效果如图:

具体效果就像这样,保存一次叠加一次

<a href="https://beian.miit.gov.cn/" target="_blank">备案号</a>

<a href="https://beian.miit.gov.cn/" target="_blank">备案号</a>

<a href="https://beian.miit.gov.cn/" target="_blank">备案号</a>

而这个bug我测试了一个,只要是系统设置里带有被转义的字符串都会无限叠加,确实是 一个bug

很快为了解决问题,拉取源代码

在网站根目打开 system/helpers/string.helper.php文件 大约16行可以看到如下代码:

if (!function_exists('cn_substrR')) {
    function cn_substrR($str, $slen, $startdd = 0)
    {
        $str = cn_substr(stripslashes($str), $slen, $startdd);
        return addslashes($str);
    }
}

在这段代码后面添加如下代码

if (!function_exists('cn_substrR_s')) {
    function cn_substrR_s($str, $slen, $startdd = 0)
    {
        $str = cn_substr(stripslashes($str), $slen, $startdd);
        return $str;
    }
}

原因分析 cn_subst方法已经转义过了
使用 addslashes则进行二次转义,导致多重叠加写进数据库


然后在admin/sys_info.php中46行左右

$v = cn_substrR(${$k}, 1024);

修改为

$v = cn_substrR_s(${$k}, 1024);

保存,重新生成代码即可解决问题。

如需转载请注明出处。
本文地址:https://www.senxia.me/php/1.html

返回顶部