2011-10-13 39 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

好的电话。没想到这一点。谢谢。 –