2011-10-13 42 views
0

我創建了一部分CMS,允許管理員將頁面上的所有文本轉換爲textareas,以便他們可以編輯內容。他們改變的所有內容都在div內,我通過jQuery/AJAX將div的內容提交給處理數據的PHP控制器。然而,jQuery非常完美地抓取了HTML並將其發送給PHP控制器,但PHP會修剪一些內容(每隔一段時間刪除一些標籤)。使用PHP fWrite保存HTML數據導致格式問題

例如,如果我提交

<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

$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

您是否已對$ page_content進行了回顯以確保您正確接收它? – jprofitt

+0

遠程代碼注入FTW。 – hakre

回答

1

您很可能會將codeigniter XSS過濾器激活,這會破壞您的數據。

你可以禁用它,然後它應該工作。

+0

好的電話。沒想到這一點。謝謝。 –