【问题标题】:TinyMCE save to MySQL, then display back in TinyMCE and display on PageTinyMCE 保存到 MySQL,然后在 TinyMCE 中显示并在 Page 上显示
【发布时间】:2018-09-03 19:01:28
【问题描述】:

我将 TinyMCE (V 4.8.2) 集成到网络应用程序中,用户可以在服务器上创建自己的网页。我们将所有内容都保存到 MySQL 数据库中。

准备将数据保存到数据库中然后从数据库中提取并显示它的正确方法是什么?

我尝试通过运行以下代码来准备保存: $pageContent = $mysqli->real_escape_string($_POST['pageContent']);

当我从数据库中提取它时,我使用以下代码在 TinyMCE 编辑器中显示它: htmlspecialchars($pageContent) 问题是,它正在将 \r\n 添加到显示中。

从 TinyMCE 保存和显示数据的正确方法是什么?

谢谢! 瑞克

【问题讨论】:

  • Oy,在 Mysqli 或 PDO 中使用准备好的语句,尽量不要修改数据,对 HTML 使用 BBCode 之类的东西,并在页面上显示用户输入时使用 htmlentities 以防止 XSS。在安全方面,这不是一件小事。我建议阅读XSS、SQLInjection 以及与向其他用户显示用户输入相关的任何内容。
  • 感谢 ArtisticPhoenix 的信息。但是,使用 htmlentities 会直接在页面上显示所有标签;

    PageTitle

    而不是处理标签并仅显示数据。我需要网站在输入时显示用户设置的格式。
  • 这就是重点,实际上。您不应该允许用户直接放入 HTML,而是使用某种“模板”系统,堆栈溢出是一个很好的例子,可以创建一个链接,您没有放入 <a> 标签,而是放入 [text](url),这可以防止人们从将 JavaScript 代码注入其他用户可以看到的页面中,这将允许他们执行诸如窃取会话 cookie 并以他们的身份登录等(XSS),当您在这里写帖子时,您不要输入<strong>text</strong>,而是输入**text**然后 SO 在构建页面时对其进行转换。
  • 除了 SO 使用的系统之外,还有其他系统,有些使用 [b]text[/b] 等伪标签...允许用户提供 HTML 是有风险的业务。
  • 感谢ArtisticPhoenix的投入。我真的很感激。

标签: php mysql tinymce


【解决方案1】:

\r\n 是 html 中的新行,由 tinymce 读取....要删除这些,您需要使用 stripslashes。

你可以试试

$pageContent = stripslashesh(str_replace('\r\n', '',$mysqli->real_escape_string($_POST['pageContent'])));

只有 stripslashes 会将 \r\n 转换为 'rn' 并将其存储为文本...所以 str_replace 可用于删除整个 \r\n..

【讨论】:

  • 感谢 J 博士。这似乎很有效。但是,我需要做什么才能在网页上显示数据?我正在尝试上面提到的 htmlentities,但它在页面上显示 html 标签而不是格式。
猜你喜欢
  • 2012-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
  • 1970-01-01
  • 2023-03-11
  • 2013-07-01
相关资源
最近更新 更多