【问题标题】:how to save ckeditor content in mysql database如何将ckeditor内容保存在mysql数据库中
【发布时间】:2016-03-31 04:40:13
【问题描述】:

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

  1. 标题元素内的标题。

  2. “editor1”元素内的文章(text,code-sn-p,image)。

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

如何将其保存到 mysql 表中?我可以将整个 editor1 元素保存在 TEXT 类型的列中吗?

【问题讨论】:

    标签: javascript php html mysql ckeditor


    【解决方案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?这会带来安全威胁吗?
    • 欢迎您。我之前没有尝试过,但是我认为如果您在文章中包含弹出代码,那么它将无法正常工作。关于安全性,不,这不会强加安全性。但是,网站安全是一个大问题,您需要了解更多信息。 Stackoverflow 对此有一些有趣的答案,您也可以在互联网上找到有关该问题的好文章,只需 google 即可。
    • 天啊,我喜欢这个答案,摆脱了我一个月的头痛。非常感谢。
    【解决方案3】:

    简单易用的base64_encode()

    $content = base64_encode($editor_content);
    

    当你获取数据时使用 base64_decode()

    $content = base64_decode($editor_content);
    

    【讨论】:

    • 如此简单但完美运行,对于那些拥有非base64旧内容的人,您需要添加base64检测功能来检索非base64旧内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多