1

我刚刚在我正在构建的网站上安装了 CKeditor 富文本所见即所得编辑器,它似乎工作正常,除了它将文本作为编码 html 而不是常规 html 插入到我的 mysql 数据库中,然后当浏览器输出这个text 它将编码的数据转换为常规的 html,然后显示在浏览器中,显示 html 标签并且没有任何样式!?

例如我输入:

"This is text"

进入编辑器,然后插入

<p>This is text</p>

进入数据库。然后当页面被调用时,浏览器将上面的内容转换并在页面上输出以下内容:

<p>This is text</p>

显然我只想"This is text"在页面上显示。

有谁知道为什么会发生这种情况/如何解决它?

任何建议都将受到欢迎。

干杯

4

3 回答 3

3

如果您不希望 CKEditor 为您创建段落,请设置config.autoParagraph为 false。此外,您可能希望将输入键行为config.enterMode设置为CKEDITOR.ENTER_BR

关于消失的风格......


编辑:好的,看来我错过了你的观点。

因此,您的网站在呈现您输入的内容时显示的是 HTML 标记而不是 HTML?那么问题是你的服务器端而不是CKEditor。您可以在控制台中验证CKEDITOR.instances.yourInstance.getData()生成正确的非转义 HTML:

<p>This is text</p> // Right!

如果是这样,并且我坚信是这样,CKEditor 就很好,这是您的服务器应用程序,它将特殊字符转换为实体(例如 PHP htmlspecialchars)同时保存到数据库。你没有提到你在那里使用什么样的框架/语言,所以我可以告诉你,这是为了保护用户输入以防止跨站点脚本、破坏布局等,所有流行的框架都允许你禁用该功能一个特定的领域。只需参考文档。

于 2013-10-05T11:17:32.707 回答
2

现代模板语言倾向于自动转义 html 输入。例如,在 DTL 中,只需使用 {{ object.field_name|safe }},它就会在模板中正确显示。这是一个理想的操作,因为用户输入被认为是不可信的,并且可能被认为是恶意的。

于 2018-05-20T04:26:26.910 回答
1

浏览器不解析 HTML,因此在显示的页面(或在 php 文件中)尝试使用{! !}而不是{{ }}.

于 2020-09-26T07:12:28.157 回答