2012-03-18 82 views
1

我使用TinyMCE作爲我的PHP/CodeIgniter CMS後端輸入。但是,當我使用文本顏色時,一些代碼不會保存,並且不會顯示正確的顏色。當我將樣式保存爲MySQL時,刪除樣​​式

我該如何解決這個問題?

在此先感謝。

<span style="color: #ff00ff;">Some text</span> 

成爲

<span #ff00ff;">Some text</span> 

數據庫


一些代碼在這裏。

在我的控制器中。

function _fields() 
{ 
    $data = array(
     .... 
     'content'   => $_POST['content'], 
     .... 
    ); 
    return $data; 
} 


function create() 
{ 
    // We need TinyMCE, so load it 
    $this->bep_assets->load_asset_group('TINYMCE'); 
    ... 
    if ($this->input->post('name')) 
    { 
     $data = $this->_fields(); 
     $this->MKaimonokago->addItem($this->module,$data); 
... 

而在我的模型中。

function addItem($module,$data,$return_id=FALSE) 
{ 
    $module_table = 'omc_'.$module; 
    ... 
    $this->db->insert($module_table, $data); 
    ... 
} 
+2

顯示一些代碼。弦在哪一點變形? – 2012-03-18 13:29:12

+2

Overeager消毒的地方? – Robus 2012-03-18 13:29:13

+1

你能檢查問題發生在哪一點嗎?原始的POST字段是什麼樣的? – 2012-03-18 13:40:55

回答

3

用CodeIgniter,如果你有XSS過濾器全局啓用(設置在config.php),你會發現,HTML內嵌式的文字是從所有的表單輸入中刪除。

要解決這個問題,您可以禁用全局XSS過濾並手動過濾您的TinyMCE表單輸入,例如HTML Purifier,這可以讓您更多地控制您希望允許的元素和屬性。

爲了您的表單輸入其餘您仍然可以通過CodeIgniter的XSS過濾器運行它們 - 你就得做手工,像這樣:

$this->form_validation->set_rules('form_item_name', 'Field Name', 'required|xss_clean|strip_tags|trim'); 
5

可能是你能做到這一點(如果它的問題,因爲TinyMCE的刪除某些元素/屬性)

tinyMCE.init({ 
    mode : "exact", 
    elements : "page_content", 
    theme : "advanced", 
    // You can use 
    extended_valid_elements: "span[class|align|style]" 
    // Or you can use 
    verify_html : false 
}); 

//以下行(內tiny_mce_src.js)允許所有的元素和屬性,如果verify_html設置爲false

if (settings.verify_html === false) 
    settings.valid_elements = '*[*]'; 

參考:tinyMce

SO的另一個參考。