我正在用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“ ”;
}
?>
admin_footer.php, 用 editPost.php
呈现