Использование PHP fWrite для сохранения данных HTML вызывает проблемы с форматированием - PullRequest
0 голосов
/ 13 октября 2011

Я создал часть своей 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 Ответ

1 голос
/ 13 октября 2011

Скорее всего, у вас активирован XSS-фильтр codeigniter, который уничтожит ваши данные.

Вы можете отключить его, и тогда оно должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...