如何将 CKEditor 编辑器的内容保存到 MySQL 数据库?

4
我正在使用ckeditor创建一个博客网站。我想使用PHP和MySQL的组合将整篇文章保存在数据库中。如果我提交包含ckeditor的表单,我会在$_POST['editor']中得到编辑器的内容。我想将文章保存在MySQL数据库中。以下图片包含整个表单数据,包括:

  1. 标题在标题元素内。

  2. 文章(文本、代码片段、图像)在“editor1”元素内。

$_POST['editor']数组看起来像:

enter image description here

我该如何将其保存到mysql表中?我能否将整个editor1元素保存在TEXT类型的列中?
3个回答

11

是的,您可以将整篇文章提交到数据库。但在提交之前,请尝试使用此功能:

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?这会造成安全威胁吗? - AL-zami
欢迎您。我以前没有尝试过这个,但我认为如果您在文章中包含弹出代码,那么它将无法正常工作。关于安全性,不,这不会影响安全性。然而,网站安全是一个大问题,您需要更多地了解它。Stackoverflow有一些有趣的答案,您也可以在互联网上找到有关该问题的好文章,只需谷歌一下即可。 - weblover
哇塞,我喜欢这个答案,终于摆脱了一个月的头痛。非常感谢! - judy

2

是的,你可以将源代码存储在数据库中,这就是WordPress的工作原理。

但是,在将字符串发送到数据库之前,请记得对其进行转义,使用:

mysqli_escape_string();

当您获取后续的帖子数据时,PHP将只在屏幕上打印HTML。

如何使用此函数仅转义字符串?我应该将整个“editor1”元素传递到该函数中吗?我打算在mysqli上使用PDO。在PDO中,该函数的等效物是什么? - AL-zami
关于最后一行,你是在说从数据库中检索数据吗? - AL-zami

2

使用base64_encode()简单易懂

$content = base64_encode($editor_content);

当您获取数据时,请使用base64_decode()函数。

$content = base64_decode($editor_content);

非常简单但完美地工作了,适用于那些具有旧内容且不是base64的人,您需要添加一个base64检测函数来检索旧内容,以便其能够被正确解码。 - c7borg
这个如何与文本的可能样式配合工作?这个也会被保存并以良好的方式从数据库中检索出来吗? - Vlusion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接