【问题标题】:Using PHP fWrite to save HTML data causes formatting issues使用 PHP fWrite 保存 HTML 数据会导致格式问题
【发布时间】:2011-10-14 00:28:50
【问题描述】:

我创建了我的 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 处理数据时标签会被搞砸?谢谢!!

【问题讨论】:

  • 您是否对 $page_content 进行了回显以确保您正确接收它?

标签: php javascript html ajax codeigniter


【解决方案1】:

您很可能激活了 codeigniter XSS 过滤器,这会破坏您的数据。

您可以禁用它,然后它应该可以工作。

【讨论】:

  • 好电话。没想到。谢谢。
猜你喜欢
  • 1970-01-01
  • 2023-03-13
  • 2011-05-10
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 2015-06-14
相关资源
最近更新 更多