如何在dede文章中添加HTML自定义字段而避免字符被过滤?

dede文章中,增加HTML自定义字段时字符被过滤可能是因为开启了自动过滤功能。请检查并关闭该功能。

在dedecms后台频道模型增加自定义字段时,HTML文字编辑器能够解决用户编辑问题,包括纯单行或多行文本编辑,但dedecms会自动过滤掉某些敏感的字符,比如style样式和百度地图js调用等。

如何在dede文章中添加HTML自定义字段而避免字符被过滤?

HTML文字样式编辑乱码问题

dedecms默认的文本编辑器虽然不太美观,但是最简洁,更换过功能强大的ueditor后,满足了绝大用户的编辑需要,但替换的时候还需要二次开发,比如上传图集问题,点不了本地上传的按钮等,所以还是选择用默认的文本编辑器,自定义的HTML编辑器功能强大,但是还是不如默认模型的文本编辑器,为了数据安全,比如用在评论的地方,会过滤掉某些敏感词,或者某些非法窃取数据的代码,dede使用includehelpersfilter.helper.php进行过滤,被过滤的可以找到如下字段:

$ra1 = array(‘javascript’, ‘vbscript’, ‘expression’, ‘applet’, ‘meta’, ‘xml’, ‘blink’, ‘link’, ‘style’, ‘script’, ’embed’, ‘object’, ‘iframe’, ‘frame’, ‘frameset’, ‘ilayer’, ‘layer’, ‘bgsound’, ‘title’, ‘base’);

根据实际需要删除style即可,就可以解决HTML文本编辑器的样式乱码问题。

百度地图js失效问题

百度地图生成器地址(http://api.map.baidu.com/lbsapi/createmap/index.html),设置完了之后点击复制代码,多余的代码可以不要,只需要复制 <script type="text/javascript"> 到 </script >之间的代码即可,其他代码,根据实际情况直接写在内容页模板里面,这里需要注意的是百度需要提供开发密钥,站长们去申请就好了,直接写在内容模板里,把显示地图的区域代码放在适合的位置,代码如下:

<!百度地图容器,样式根据实际情况修改,id默认为map>
<div style="width:700px;height:550px;border:#ccc solid 1px;fontsize:12px" id="map"></div>

接下来就把js部分全部复制粘贴到自定义的文本框内,如果怕字符数限制,可以自己调大点。

把工作做完了之后,在前台能看到一切正常,会发现再次进入编辑的时候,某些字符会被过滤,title,script等,变成sc<x>ript等乱七八糟的字符,让地图显示失效,同样按照上述,$ra1 = array(‘javascript’, ‘vbscript’, ‘expression’, ‘applet’, ‘meta’, ‘xml’, ‘blink’, ‘link’, ‘style’, ‘script’, ’embed’, ‘object’, ‘iframe’, ‘frame’, ‘frameset’, ‘ilayer’, ‘layer’, ‘bgsound’, ‘title’, ‘base’);删除title、script、javascript,但是第二次进去编辑的时候,前台地图仍然失效,通过文本对比工具发现,还有“,”逗号也被过滤了,在朋友的帮助下,还是围绕includehelpersfilter.helper.php这个文件下功夫,在大概68行$val = preg_replace(‘/([x00x08,x0bx0c,x0ex19])/’, ”, $val);改成$val = preg_replace(‘/([x00x08|x0bx0c|x0ex19])/’, ”, $val);问题得到解决,但不知道是否涉及到安全问题,如果不删除上述这些字段,还有其他实现方法,其实地图乱码应该修改68行的代码就足够了,在includehelpersfilter.helper.php发现以下这个字段,把它删除就能解决样式乱码问题。

FAQs

Q1: dede文章增加HTML自定义字段字符被过滤问题如何解决?

A1: dede使用includehelpersfilter.helper.php进行过滤,被过滤的可以找到如下字段:$ra1 = array(‘javascript’, ‘vbscript’, ‘expression’, ‘applet’, ‘meta’, ‘xml’, ‘blink’, ‘link’, ‘style’, ‘script’, ’embed’, ‘object’, ‘iframe’, ‘frame’, ‘frameset’, ‘ilayer’, ‘layer’, ‘bgsound’, ‘title’, ‘base’);根据实际需要删除style即可,就可以解决HTML文本编辑器的样式乱码问题。

Q2: 百度地图js失效问题如何解决?

A2: 百度地图生成器地址(http://api.map.baidu.com/lbsapi/createmap/index.html),设置完了之后点击复制代码,多余的代码可以不要,只需要复制 <script type="text/javascript"> 到 </script >之间的代码即可,其他代码,根据实际情况直接写在内容页模板里面,这里需要注意的是百度需要提供开发密钥,站长们去申请就好了,直接写在内容模板里。

如何在dede文章中添加HTML自定义字段而避免字符被过滤?

【dede文章增加HTML自定义字段字符被过滤问题】

问题

在使用织梦DedeCMS(Dedecms)进行文章编辑时,如果尝试通过HTML自定义字段添加特殊字符或HTML标签,发现这些字符或标签被自动过滤掉了。

原因分析

这种现象通常是由于以下几个原因造成的:

1、系统安全设置:为了防止XSS攻击,DedeCMS默认会对输入内容进行过滤,包括HTML标签和特殊字符。

2、自定义字段配置:自定义字段可能未正确配置,导致HTML内容无法正常解析。

3、模板文件问题:模板文件可能对HTML标签有特殊处理,导致内容被过滤。

解决方法

1. 修改系统安全设置

登录后台管理,进入“系统基本参数”设置。

查找“文章内容过滤”相关设置,通常有一个开关可以控制是否开启内容过滤。

关闭该开关,保存设置后,再尝试添加HTML内容。

2. 调整自定义字段配置

如何在dede文章中添加HTML自定义字段而避免字符被过滤?

进入“模型管理”,找到对应模型。

点击“自定义字段”,对需要添加HTML内容的字段进行编辑。

在“字段属性”中,找到“字段类型”选项,选择“文本编辑器”或“HTML编辑器”。

保存字段设置。

3. 修改模板文件

找到相应的模板文件,通常位于“templets”目录下。

在模板文件中,查找处理HTML标签的代码,可能是PHP函数或JavaScript脚本。

修改或删除这些代码,以允许HTML标签正常显示。

4. 使用插件或代码

如果上述方法都无法解决问题,可以考虑使用第三方插件或自定义代码来处理HTML内容。

示例代码

以下是一个简单的PHP代码示例,用于处理HTML内容:

function safe_html($content) {
    $content = htmlspecialchars($content, ENT_QUOTES, 'UTF8');
    $content = str_replace("
", "<br>", $content);
    return $content;
}
// 使用示例
$html_content = "<p>Hello, <strong>World!</strong></p>";
$safe_html_content = safe_html($html_content);
echo $safe_html_content;

通过以上方法,可以解决在织梦DedeCMS中添加HTML自定义字段时字符被过滤的问题,根据具体情况,可能需要调整系统设置、模板文件或使用特定的代码来确保HTML内容能够正确显示。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1124674.html

(0)
未希的头像未希新媒体运营
上一篇 2024-10-02 06:37
下一篇 2024-10-02 06:39

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

免费注册
电话联系

400-880-8834

产品咨询
产品咨询
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入