从TinyMCE <textarea>

时间:2019-04-13 21:44:57

标签: php sql-update tinymce

我正在用PHP构建自己的CMS中更新博客文章,并在XAMPP上本地运行。我已经下载了所见即所得插件TinyMCE的源文件,用于添加和编辑帖子。编辑器工作正常。它会按照预期的方式检索和提交数据,但一个问题除外;在textarea标签中提交的内容(按类名称包含TinyMCE对象)在实际的博客文章显示中包含额外的反斜杠和html标签。例如,文字行

“这就是CSS(级联样式表)的来源。这是用于格式化页面内容并设置所有文本,背景,图像,边框等样式的语言。”

放入文本区域时,返回并显示

“这就是CSS(级联样式表)的来源。这是一种格式化页面内容并设置所有文本,背景,图像,边框等样式的语言。\ r \ n”

现在这是我感到困惑的地方...

在将数据绑定为mysqli准备语句中的参数之前,我先清理数据。我通过运行我希望通过functions.php中定义的clean()函数清除的任何数据来执行此操作。这不应该解决这个问题(到目前为止,在TinyMCE之前一直如此)。帖子内容的清理和提交过程如下:

functions.php

 函数clean($ param){

     全局$ connection;

     $ cleaned = mysqli_real_escape_string($ connection,trim(strip_tags($ param)));

    返回清洗

    }
 

editPost.php ,从中我省略了一些原始表单标记。仅包括处理提交时的表单数据的php,表单的开头,包含帖子内容的代码块,提交按钮和表单的结尾。否则,你们将盯着很多与问题无关的绒毛。

  <?php

    if(isset($ _ POST ['update_post']))** {**

    $ post_author = clean($ _ POST ['post_author']);
    $ post_title = clean($ _ POST ['post_title']);
    $ post_category_id = clean($ _ POST ['post_category_id']);
    $ post_category = clean($ _ POST ['post_category']);
    $ post_status = clean($ _ POST ['post_status']);
    $ post_image = $ _FILES ['post_image'] ['name'];
    $ post_image_temp = $ _FILES ['post_image'] ['tmp_name'];
    $ post_tags = clean($ _ POST ['post_tags']);
    $ post_content = clean($ _ POST ['post_content']);
    $ post_comment_count = clean($ _ POST ['post_comment_count']);
    $ post_date = clean($ _ POST ['post_date']);

    $ query =“更新帖子SET post_title = ?、 post_category_id = ?、 post_date = ?、 post_author = ?、 post_status = ?、 post_tags = ?、 post_content = ?、 post_image = ?、 post_id =?”;

    date_default_timezone_set('America / Los_Angeles');
    $ now = date('Y-m-d');

 $ stmt = mysqli_stmt_init($ connection);
 mysqli_stmt_prepare($ stmt,$ query);
 mysqli_stmt_bind_param($ stmt,'sissssssi',$ post_title,$ post_category_id,$ now,$ post_author,$ post_status,$ post_tags,$ post_content,$ post_image,$ post_id);


 mysqli_stmt_execute($ stmt);
 mysqli_stmt_close($ stmt);
 echo“ 

Post Updated。查看Post 编辑更多帖子

”;     }     ?>      
     
                 
     
       

admin_footer.php, editPost.php

呈现
  
    
    
    
    
    
    
    

    
    
 

在使用TinyMCE之前,我从未获得过这些多余的字符。清洁功能每隔一段时间为我工作一次。唯一需要更改的是此所见即所得(WYSIWYG)编辑器,因此我相信问题出在他们身上。我可以添加到clean()的替代方法吗? 我已经尝试添加 html_entity_decode($ cleaned) htmlspecialchars_decode($ cleaned),但没有运气。什么都没改变

 函数clean($ param){
    全局$ connection;
    $ cleaned = mysqli_real_escape_string($ connection,trim(strip_tags($ param)));
    html_entity_decode($ cleaned);
    htmlspecialchars_decode($ cleaned);
    返回$ cleaned;

    }
 

0 个答案:

没有答案