Когда я сохраняю span со стилем в MySQL, стиль удаляется - PullRequest
1 голос
/ 18 марта 2012

Я использую TinyMCE для внутреннего ввода PHP / CodeIgniter CMS. Однако, когда я использую цвет текста, некоторые коды не сохраняются и не показывают правильный цвет.

Как я могу решить эту проблему?

Заранее спасибо.

<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 ]

5 голосов
/ 18 марта 2012

Может быть Вы могли бы сделать это (если это проблема, потому что 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 .

3 голосов
/ 18 марта 2012

С CodeIgniter, если у вас включен глобальный XSS-фильтр (установленный в config.php), вы обнаружите, что текст встроенного HTML-стиля удаляется из всех входов формы.

КомуЧтобы обойти это, вы можете отключить глобальную XSS-фильтрацию и вручную отфильтровать входные данные формы TinyMCE, например, HTML Purifier , что дает вам гораздо больший контроль над элементами и атрибутами, которые вы хотели бы разрешить.

Для остальных входов формы вы все равно можете запустить их через XSS-фильтр CodeIgniter - вам просто нужно будет сделать это вручную, например, так:

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