Я обновляю записи блога в своей собственной CMS, встроенной в PHP и работающей локально на XAMPP.Я загрузил исходные файлы для TinyMCE, плагина WYSIWYG, для добавления и редактирования сообщений.Редактор работает отлично.Он извлекает и отправляет данные так, как предполагается, за исключением одной проблемы;содержимое, представленное в теге textarea, которое включает в себя объект TinyMCE по имени класса, содержит дополнительные обратные косые черты и HTML-теги в реальном отображении сообщения блога.Например, строка текста
«Вот где появляется CSS (каскадные таблицы стилей). Это язык, который форматирует содержимое страницы и стилизует весь текст, фон, изображения, границы и т. Д.»
при вводе в текстовое поле возвращает и отображает
"Вот где появляется CSS (каскадные таблицы стилей). Это язык, который форматирует содержимое страницы и стилизирует весь текст, фон, изображения, границы и т. д. \ r \ n "
Теперь вот где я запутался ...
Я очищаю свои данные перед тем, как связать их как параметр в mysqliподготовленное заявление.Я делаю это, выполняя любые данные, которые хочу очистить, с помощью моей функции clean (), определенной в functions.php.Разве это не должно заботиться о проблеме (как это всегда было до TinyMCE).Процесс очистки и отправки содержимого публикации выглядит следующим образом:
functions.php
function clean($param){
global $connection;
$cleaned = mysqli_real_escape_string($connection, trim(strip_tags($param)));
return cleaned;
}
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 = "UPDATE posts SET post_title = ?, post_category_id = ?, post_date = ?, post_author = ? , post_status = ?, post_tags = ?, post_content = ?, post_image = ? WHERE 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 "<p class='bg-success'>Post Updated. <a href='../post.php?p_id={$get_post_id}'>View Post, </a> or <a href='posts.php'>Edit More Posts</a></p>";
}
?>
<form action="" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="post_content">Post Content </label>
<textarea type="text" class="form-control tinymce" name="post_content"
cols="30" rows="10"><?php echo $post_content; ?>
</textarea>
</div>
<div class="form-group">
<input class="btn btn-primary" type="submit" name="update_post" value="Update Post">
</div>
admin_footer.php, отрисовано с помощью editPost.php
<script src="js/jquery.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/js/bootstrap.bundle.min.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi">
</script>
<script src ="js/plugins/tinymce/jquery.tinymce.min.js"></script>
<script src ="js/plugins/tinymce/tinymce.min.js"></script>
<script type="text/javascript">
tinymce.init({
selector: "textarea.tinymce",
plugins: [
"advlist autolink link image lists print preview hr anchor pagebreak",
"searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media",
"save table contextmenu directionality emoticons template paste textcolor"
],
toolbar: "insertfile undo redo | styleselect | bold italic underline |
alignleft aligncenter alignright alignjustify | bullist numlist
outdent indent | link image | print preview media fullpage |
forecolor backcolor emoticons"
});
</script>
<script src="js/scripts.js"></script>
</body>
</html>
Я никогда не получал эти дополнительные символы до использования TinyMCE.Функция очистки работала для меня каждый раз.Единственное, что нужно изменить, - это редактор WYSIWYG, так что я уверен, что проблема связана с ними.Есть ли обходной путь, который я мог бы добавить к clean ()? Я уже пытался добавить html_entity_decode ($ cleaned) и htmlspecialchars_decode ($ cleaned) , но безуспешно.Ничего не изменилось
function clean($param){
global $connection;
$cleaned = mysqli_real_escape_string($connection, trim(strip_tags($param)));
html_entity_decode($cleaned);
htmlspecialchars_decode($cleaned);
return $cleaned;
}