如何将ckeditor内容保存在mysql数据库中
Posted
技术标签:
【中文标题】如何将ckeditor内容保存在mysql数据库中【英文标题】:how to save ckeditor content in mysql database 【发布时间】:2016-03-31 04:40:13 【问题描述】:我正在使用 ckeditor 创建一个博客站点。我想使用 php 和 mysql 的组合将整篇文章保存在数据库中。如果我提交包含 ckeditor 的表单,我会在$_POST['editor']
中获得编辑器的内容。我想将文章保存在 MySQL 数据库中。下图包含整个表单数据。它包括:
标题元素内的标题。
“editor1”元素内的文章(text,code-sn-p,image)。
$_POST['editor']
数组看起来像:
如何将其保存到 mysql 表中?我可以将整个 editor1 元素保存在 TEXT 类型的列中吗?
【问题讨论】:
【参考方案1】:是的,您可以将源代码存储在数据库中,这就是 Wordpress 的工作原理。
但请记住在将字符串发送到数据库之前对其进行转义,使用:
mysqli_escape_string();
当您之后获取发布数据时,PHP 只会在屏幕上打印 html。
【讨论】:
内容与字符串、codesn-p 和图像混合。我怎样才能使用这个函数来只转义字符串。我应该在那个函数中传递整个“editor1”元素吗?我打算在 mysqli 上使用 PDO。PDO 中的那个功能可能相当于什么? 关于最后一行,您是在谈论从数据库中检索数据吗?【参考方案2】:是的,您可以将整篇文章提交到数据库。但是,在您提交之前;尝试使用此功能:
function dataready($data)
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
例子:
dataready($_POST['editor']);
所以你可以使用任何你想要的 PDO 或 Mysqli。
为避免在打印文章时回显 HTML 元素,请使用此函数:
html_entity_decode($article_text);
希望这对你有用。
附言。为您的数据库使用列类型 TEXT 很好。如果您想向该列添加更多文本,也可以使用 LONGTEXT。
【讨论】:
感谢您的准确回答。我有一个问题要问您,如果我使用 html_entity_decode 函数,当我打印帖子数组时会弹出 iframe?这会带来安全威胁吗? 欢迎您。我之前没有尝试过,但是我认为如果您在文章中包含弹出代码,那么它将无法正常工作。关于安全性,不,这不会强加安全性。但是,网站安全是一个大问题,您需要了解更多信息。 *** 对此有一些有趣的答案,您也可以在互联网上找到有关该问题的好文章,只需 google 即可。 天啊,我喜欢这个答案,摆脱了我一个月的头痛。非常感谢。【参考方案3】:简单易用的base64_encode()
$content = base64_encode($editor_content);
当你获取数据时使用 base64_decode()
$content = base64_decode($editor_content);
【讨论】:
如此简单但完美运行,对于那些拥有非base64旧内容的人,您需要添加base64检测功能来检索非base64旧内容以上是关于如何将ckeditor内容保存在mysql数据库中的主要内容,如果未能解决你的问题,请参考以下文章
将 TextField 内容保存在自定义动态 tableView 中