前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决ThinkPHP升级5.1后输出字符被转义的问题。

解决ThinkPHP升级5.1后输出字符被转义的问题。

作者头像
世纪访客
发布2018-08-02 15:43:30
2.8K0
发布2018-08-02 15:43:30
举报
文章被收录于专栏:西枫里博客西枫里博客
...
...

最近给博客升级框架,由于从5.0过渡到5.1要修改的地方还蛮多的,加上之前一些代码在实际运行中略显低效,索性就把后端重构一下。把一些关键部位调整到位后刷新页面,发现原先用于输出备案信息的地方被转义输出成字符串了,印象中TP模版输出默认是使用htmlspecialchars函数的,既然能原样输出字符串,所以和后端改造的关联不大。

使用raw方法不进行转义输出。

TP最近升级的很是生猛,只好去翻下手册了,在模版章节,使用函数部分,TP给了这样一个说法:为了避免出现XSS安全问题,默认的变量输出都会使用 htmlentities 方法进行转义输出。如果不想被转义,那只需要在变量后面加上raw方法即可,如:{$anji|raw}

除了raw方法,TP还给了一个配置方法,在template.php配置中添加一项'default_filter' => 'htmlspecialchars',这样也可以将htmlentities 换成 htmlspecialchars过滤。

htmlentities()和htmlspecialchars()的区别。

一直用htmlspecialchars函数,htmlentities别说用了,一点印象都没有(汗,还是手册看少了)。特地去翻了下手册,htmlentities就是将所有字符转换为HTML实体,也就是全部转义输出。而htmlspecialchars是把预定义的字符转换为HTML实体。htmlspecialchars字符包括连接符(&)、双引号(")、单引号(')、小于(<)、大于(>)。如果需要把HTML实体再转换为字符,这两个函数都提供了一个decode函数分别是html_entity_decode()、htmlspecialchars_decode(),拼写有区别,前面是拆分html和entity加下划线后追加_decode的,而后者是直接补_decode后缀的。

PS.刚刚升级PHP版本和Mysql版本,卡不出来了,就差点删库跑路了,笑~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用raw方法不进行转义输出。
  • htmlentities()和htmlspecialchars()的区别。
相关产品与服务
ICP备案
在中华人民共和国境内从事互联网信息服务的网站或APP主办者,应当依法履行备案手续。腾讯云为您提供高效便捷的 ICP 备案服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档