使用kindeditor编辑器后ThinkPHP自动转义存储HTML编辑器内容导致读取显示html代码的原因和解决方法

--begin itlife365 jiandanjie
使用kindeditor编辑器后ThinkPHP自动转义存储HTML编辑器内容导致读取显示html代码的原因和解决方法
最近在使用thinkphp3.1.3的这个版本结合kindeditor的时候,{$goods[0]["goods_desc"]}显示的是html代码。
原来系统保存入口的时候默认自动添加了函数htmlspecialchars,显示的时候需要添加htmlspecialchars_decode,即{$goods[0]["goods_desc"]|htmlspecialchars_decode}

原理说明如下:参考完全开发手册【获取系统变量】章节

过滤方法:(可选)可以用任何的内置函数或者自定义函数名,如果没有指定的话,采用默认的htmlspecialchars函数进行安全过滤(由DEFAULT_FILTER 参数配置),参数就是前面方法名获取到的值,也就是说如果调用:
$this->_get("name");
最终调用的结果就是 htmlspecialchars($_GET["name"]),如果要改变过滤方法,可以使用:
$this->_get("name","strip_tags");
默认值:(可选)是要获取的参数变量不存在的情况下设置的默认值,例如:
$this->_get("id","strip_tags",0);

ThinkPHP的conf文件中的Convention.php有一个配置选项

'DEFAULT_FILTER'        =>  'htmlspecialchars', // 默认参数过滤方法 用于I函数...
默认这个方法是开启的。也就是说,我们往数据库里面存储的数据中都会经过htmlspecialchars这个函数的转义处理。
如果不想使用这个功能可以禁用。
在conf目录下找convention.php配置文件,将DEFAULT_FILTER功能禁用掉,以后需要使用的时候再手动调用即可。

示例如下:

1.数据库中存储的内容以及读取出来的文章内容实例:

产品详情
潘枝江酒
潘枝江酒
高浓度
图片一张
2.在html页面中解析出来的内容效果:

产品详情
<p> 潘枝江酒 </p> <p> 潘枝江酒 </p> <p> 高浓度<img xsrc="http://127.0.0.1/iCommunity/Uploads/Images/20140911/1410407035.jpg" alt="" /> </p>

很明显可以看出,原来应该变成HTML标签的内容现在被解析成了文本里面的内容,而且在文本内容的最外面可能还加上了双引号。

--end itlife365 jiandanjie

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年11月    »
123
45678910
11121314151617
18192021222324
252627282930
搜索
标签列表
网站分类
最新留言
    文章归档
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.闽ICP备11018667号-2