#php #javascript #html #ajax #codeigniter
#php #javascript #HTML #ajax #codeigniter
Вопрос:
Я создал часть своей CMS, которая позволяет администраторам преобразовывать весь текст на странице в текстовые области, чтобы они могли редактировать содержимое. Все содержимое, которое они изменяют, находится внутри div, и я отправляю через jQuery / AJAX содержимое div на контроллер PHP, который обрабатывает данные. Тем не менее, jQuery отлично обрабатывает HTML и отправляет его на контроллер PHP, но PHP удаляет часть содержимого (время от времени удаляя некоторые теги).
Например, если я отправлю
<div class="cmsedit" style="background-color:#EEE">Hello</div>
он сохранит / запишет файл с этим
div class="cmsedit">Hello</div> .
Он удаляет открывающую скобку для div и b. Он не делает это постоянно. Если я не включаю тег стиля, обычно код остается в порядке.
Вот код, который я использую на странице javascript.
$('.save_page').click(function(){
updated_content = $('.content_to_be_edited').html();
edit_page = $('#edit_page_name').val();
$.post("<?=site_url('admin/update_page_data') ?>", { content:updated_content,page_name:edit_page });
});
Вот страница контроллера PHP
$page_content = $this->input->post('content');
$page_name = $this->input->post('page_name');
$filename = $_SERVER['DOCUMENT_ROOT']."/application/views/".$page_name.".php";
// SAVE NEW FILE
$file = fopen($filename, 'w') or die("Can't open file");
$filedata = htmlspecialchars_decode($page_content);
fwrite($file, $filedata);
fclose($file);
У кого-нибудь есть идеи, почему теги становятся запутанными, когда PHP обрабатывает данные? Спасибо!!
Комментарии:
1. Вы выполнили echo для $page_content, чтобы убедиться, что вы получаете его правильно?
Ответ №1:
Скорее всего, у вас активирован фильтр codeigniter XSS, который уничтожит ваши данные.
Вы можете отключить его, и тогда он должен работать.
Комментарии:
1. Хороший вызов. Об этом не подумал. Спасибо.