php - 安全的所见即所得选项

标签 php mysql text editor wysiwyg

我正在构建一个应用程序,需要用户输入大量文本,例如一次输入段落。我安装了一个编辑器(CKeditor)来为用户提供一个很好的界面来编辑文本等。问题是我无法在插入数据库之前清理输入,因为它会删除所有 HTML 并且文本会丢失段落和其他样式。

有没有一种方法可以安全地存储这些数据并保留基本样式,例如段落,甚至文本颜色?

最佳答案

这就是我所做的。我必须使用并构建自定义公告板和论坛系统。当有人试图放置风格化的内容、图像、视频、笑脸等时...您需要某种形式的内容放置,同时还要清理帖子。

你有一些选择。我的建议是找到一个带有 BBCode 插件的编辑器。当帖子进入您的数据库时,任何具有 HTML 元素的内容都将出现在括号(即 [ ])中,而不是打开/关闭标记中。因此,如果您想加粗某些内容,可以使用[B]加粗此内容[/B]。然后,您可以执行一个简单的函数来删除这些 BBCode 元素并用正确的 HTML 代码替换它们。

您可以做的另一件事(我不建议这样做,但会发生)是,当您将它们插入数据库时​​,用 str_replace 所有打开和关闭标记及其 html 实体,然后 str_replace 所有相应的 html 实体到显示帖子时打开和关闭标签。

我推荐 BBCode 或至少某种 markdown 的原因是因为您可以完全阻止用户用该帖子攻击您的能力,同时让他们设计自己的帖子。

HTML BBCode Parser (Pear Package) - 如果您选择 BBCode 路线,这将对您有所帮助。

CKEditor BBCode Plugin - 您只需将其添加到您的 CKEditor WYSIWYG 并使用它运行即可。

关于php - 安全的所见即所得选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21861146/

相关文章:

php - NSIS 和 PHP 之间的 Blowfish 加密消息

php - 触发器无法识别表(触发器将 NEW.values 的内容分解为多行以插入到另一个表中)

mysql - 使用从计算另一个表中提取的值更新 mysql 行

Flash CS5,动态文本字段删除某些字母

css - 是否可以仅使用 CSS 属性来编辑文本内容?

php - Kohana - 使用 DB::query 获取所有表

php - 为按钮点击填充一个单独的 div,其中按钮 ID 基于变量

php - 使用PHP在表格中显示MySQL数据

mysql - 修改 MySQL 表

python-3.x - 如何使用控制小部件将子图添加到绘图中