【问题标题】:CKeditor rich text editor displaying html tags in browserCKeditor 富文本编辑器在浏览器中显示 html 标签
【发布时间】:2013-10-05 11:00:12
【问题描述】:

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

例如我输入:

"This is text"

进入编辑器,然后插入

<p>This is text</p>

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

<p>This is text</p>

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

请问有人知道为什么会这样/如何解决吗?

欢迎提出任何建议。

干杯

【问题讨论】:

  • 您使用什么服务器端技术?您如何将内容保存在数据库中?您如何从数据库中检索它们并在页面上显示?

标签: html encoding ckeditor


【解决方案1】:

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

还有regarding disappearing styles...


编辑:好的,看来我错过了你的意思。

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

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

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

【讨论】:

  • 它不是在制作段落,而是在浏览器中呈现页面后显​​示html标签。我希望段落只是不想显示标签!
  • 啊哈,听起来很明智。我将 PHP 与 PHPmyadmin 和 mysql 以及 CKeditor 以及我的网络主机用来托管网站本身的任何软件一起使用。所以我想我会联系我的主人,问几个问题,看看我能不能解决这个问题。感谢您的帮助
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    浏览器没有解析 HTML,所以在显示的页面上(或在 php 文件中)尝试使用 {! !} 而不是 {{ }}

    【讨论】:

      猜你喜欢
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-02
      • 2014-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多