尝试使用 Summernote 编辑器将图像 url 保存到数据库时删除样式属性
Posted
技术标签:
【中文标题】尝试使用 Summernote 编辑器将图像 url 保存到数据库时删除样式属性【英文标题】:Style attribute removed when trying to save image url to database using summernote Editor 【发布时间】:2016-08-24 03:15:25 【问题描述】:我正在使用 Summernote 编辑器将文本和图像保存到 db。目前我在 Codeigniter 中嵌入了summernote,因此我将图像文件上传到服务器,然后检索回 url 并将图像插入到编辑器中。现在根据文档,我们可以调整上传到服务器的图像大小,并可以将 css 应用于图像。
插入代码并应用显示完美结果的 Css。注意数据文件名属性正在保存。
$('#summernote').summernote('insertImage', objFile, function ($image)
$image.css('width', $image.width() / 3);
$image.attr('data-filename', 'retriever');
);
一切都很好,除了当我提交表单时,样式属性从 img 标记中删除,其余数据被保存。
我的控制器功能我将数据保存到数据库的位置。
if($this->input->post())
var_dump($_POST);
$this->data=array(
'PageID'=>$this->input->post('PageID'),
'Title'=>$this->input->post('Title'),
'Description'=>$this->input->post('Description'),
'Text'=>$this->input->post('Text'),
'CreatedBy' => 1,
'CreatedDate' => date('Y-m-d'),
'UpdatedBy' => 1,
'IsActive' => 1,
'IsDeleted' => 0
);
$Where=array('PageID'=>$this->input->post('PageID'));
$Result=$this->model->insert('pagedata',$this->data,'ID',$this->input->post('PageID'),$Where);
if($Result)
$this->session->set_flashdata('Success',"Page Updated Successfully");
$Path=previousURL();
redirect($Path);
else
$this->session->set_flashdata('Error',"Sorry Couldnt Update The Page");
$Path=previousURL();
redirect($Path);
注意 var_dump 我看到样式属性应用于 img 但是当数据到达 db 时样式属性不存在我的问题是 style
标签没有保存在 db 中,而当我上传它们时它应用于图像我的意思是说它存在
【问题讨论】:
【参考方案1】:您面临的问题是由 CodeIgniter 的 XSS 过滤引起的,它从图像字符串中删除或剥离样式属性,然后将数据传递到数据库。
变化:
$this->input->post('TextAreaName')
到
$_POST['TextAreaName']
【讨论】:
以上是关于尝试使用 Summernote 编辑器将图像 url 保存到数据库时删除样式属性的主要内容,如果未能解决你的问题,请参考以下文章
如何将通过summernote生成的大型base64图像保存在我的数据库中?
(Summernote) - jQuery 和 Prototype 框架的兼容性