我使用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);
...
}
答案 0 :(得分: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
});
//如果verify_html设置为false,则以下行(tiny_mce_src.js内部)允许所有元素和属性
if (settings.verify_html === false)
settings.valid_elements = '*[*]';
参考: tinyMce
关于SO的另一个参考。
答案 1 :(得分:3)
使用CodeIgniter,如果您全局启用 XSS过滤器(在config.php
中设置),您会发现从所有表单输入中删除了HTML内联样式文本。
要解决此问题,您可以禁用全局XSS过滤并使用HTML Purifier等手动过滤您的TinyMCE表单输入,这样您就可以更好地控制您希望允许的元素和属性。
对于其余的表单输入,您仍然可以通过CodeIgniter的XSS过滤器运行它们 - 您只需手动执行它,如下所示:
$this->form_validation->set_rules('form_item_name', 'Field Name', 'required|xss_clean|strip_tags|trim');
答案 2 :(得分:0)
这是因为xss正在删除样式。我们可以使用codeigniter轻松禁用它。
$this->input->post('key', true); // Enable XSS Filter
$this->input->post('key', false); // Disable XSS Filter
谢谢。