使用CKEditor时图像标记出现问题
我正在使用上传和存储图像,这是工作 但是,CKEditor 4.1.1似乎被这些图像阻塞了 通过CKEditor添加图像。 图像的初始位置与预期一致。但是,在保存数据时,CKEditor显然在提交数据之前做了一些奇怪的事情 在一些测试中,在格式化和重新排列HTML的过程中,CKEditor去掉了“style”图像属性和第一个打开的双引号,我可以在数据库本身的文本数据中看到 这种行为完全可以复制 通过CKEditor编辑图像。 最初,图像看起来不错。但是当我查看源代码时,图像的HTML被净化为以文本形式呈现,而不是以图像对象形式呈现 禁用第三方插件。 如前所述,除了字数和字符数之外,我还使用Uploadcare。我禁用了两个插件,但这并没有改变任何事情 想法。 在保存过程中,我只是通过CodeIgniter中的$this->db->escape()函数清理数据,这是无法避免的,否则数据将不会提交,并且我收到一个错误 需要明确的是,在测试过程中,任何类型的图像对象都会出现错误;手动添加或通过Uploadcare添加 在我的查看页面中,我有:使用CKEditor时图像标记出现问题,ckeditor,uploadcare,Ckeditor,Uploadcare,我正在使用上传和存储图像,这是工作 但是,CKEditor 4.1.1似乎被这些图像阻塞了 通过CKEditor添加图像。 图像的初始位置与预期一致。但是,在保存数据时,CKEditor显然在提交数据之前做了一些奇怪的事情 在一些测试中,在格式化和重新排列HTML的过程中,CKEditor去掉了“style”图像属性和第一个打开的双引号,我可以在数据库本身的文本数据中看到 这种行为完全可以复制 通过CKEditor编辑图像。 最初,图像看起来不错。但是当我查看源代码时,图像的HTML被净化为以文
<script type="text/javascript">
CKEDITOR.replace('note', {
allowedContent: true
});
</script>
CKEDITOR.replace('note'{
允许内容:正确
});
其中---“将禁用过滤器(数据将不被过滤,所有功能将被激活)。”
然而,它不起作用,它做的和以前完全一样;按名称剥离样式属性,并将HTML转换为其常规文本等价物
如果我选择定义某个特定的东西,那么几乎所有东西都会关闭,包括插件,奇怪的是,正是我为之编写了一条规则:
<script type="text/javascript">
CKEDITOR.replace('note', {
allowedContent: {
'img': {
styles: 'height, width'
}
}
});
</script>
CKEDITOR.replace('note'{
允许的内容:{
“img”:{
样式:“高度、宽度”
}
}
});
所以我不知道发生了什么
我也曾在as me中尝试过这个建议,但两种方法都不起作用,这让我相信这是CKEditor本身特有的问题,而不是数据本身的处理
如果有人对我如何说服编辑处理图片有任何建议,我很乐意接受任何建议
allowedContent:true
,如果操作正确,将阻止CKEditor剥离图像allowedContent
设置(第二个代码示例)不正确。它不允许src
和alt
属性。没有src
的图像将被CKEditor视为无效。所以你至少应该有:
allowedContent: {
img: {
attributes: '!src, alt', // src is required
styles: 'height, width'
}
}
$config['global_xss_filtering'] = TRUE;
# Override the XSS filtering on /admin/help
if (preg_match("/^\/admin\/help/", $_SERVER["QUERY_STRING"])) {
$config['global_xss_filtering'] = FALSE;
}
我的问题与您的问题完全相同,这为我解决了问题。您应该将问题缩短。不要讲完整的故事-只列出事实并问你的问题。似乎只有当我对附加了CKEditor的文档进行编辑时,我所经历的奇怪才会发生。除此之外,图像代码仍然很好。这方面有什么进展吗?我有完全相同的问题,建议的修复方案都不起作用。我已经确认它与CodeIgniter无关(我已经在禁用protect_标识符的情况下进行了测试)。在我有机会处理它之前,CKEditor在post数据中以某种方式破坏了它。更正,这是CodeIgniter。在某些地方,它甚至会弄乱$\u POST变量(我假设只有在使用输入助手时才会这样)。一个独立的HTML页面可以很好地显示这一点。嗨,Reinmar,我已经尝试了很多方法,将服务器和框架从等式中剔除,这没有什么区别。正如我所解释的,样式属性名被选择性地删除,框架和数据库都没有这样做;CKEditor仍在有选择地删除样式属性名称。能否尝试在JSFIDLE上创建一个有限的示例?不,太复杂了。根据另一个测试,CodeIgniter可能是在使用我以前从未见过的常规高度和宽度定义时删除属性“style”和“height”的罪魁祸首。即使我删除了xss_clean规则,这种情况也会发生。但这并不能解释为什么HTML被转换成文本项。因此,至少有两种不同的错误发生。降低复杂性是调试它的最佳方法。正如我在第3点中所写的你很可能要处理不止一个问题。
$config['global_xss_filtering'] = TRUE;
# Override the XSS filtering on /admin/help
if (preg_match("/^\/admin\/help/", $_SERVER["QUERY_STRING"])) {
$config['global_xss_filtering'] = FALSE;
}