adminsがページ上のすべてのテキストをテキストエリアに変換してコンテンツを編集できるようにするCMSの一部を作成しました。彼らが変更するすべてのコンテンツはdiv内にあり、jQuery/AJAX経由でdivのコンテンツをデータを処理するPHPコントローラに送信します。しかし、jQueryはHTMLを完全に把握してPHPコントローラに送信しますが、PHPはコンテンツの一部を取り除いています(いくつかのタグを削除しています)。例えばPHPのfWriteを使用してHTMLデータを保存すると書式の問題が発生する
、私は
<div class="cmsedit" style="background-color:#EEE">Hello</div>
を提出した場合、それはそれはdiv要素aとbに開口部ブラケットを除去し、この
div class="cmsedit">Hello</div> .
でファイルを書き込み/保存されます。それはいつもそれをしません。スタイルタグを付けないと、一般的にコードはうまく残っています。
ここは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 });
});
は
$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がデータを処理するときにタグは全てが台無しになっている理由を任意のアイデアを持っているPHPコントローラーますでしょうか?ありがとう!!
$ page_contentをエコーして正しく受信していることを確認しましたか? – jprofitt
リモートコード注入FTW。 – hakre