Discuz! X “我的马甲 2.4”插件在PHP5.4+下无法显示马甲备注的解决方法
分类 网站技术/村民张先生 发布于 2018-11-11 02:13
BUG描述:GBK版本的Discuz! X(3.1版本为例)在PHP5.4+版本下,当马甲备注中含有多个汉字时,前台马甲列表中无法显示备注信息。
原因:htmlspecialchars函数所需转换的内容若无法识别字符集,在PHP 5.4之前的版本中将被忽略并由 ISO-8859-1 替代,自PHP 5.4起,无法被识别的字符集将被忽略并由 UTF-8 替代。
解决方法:应用htmlspecialchars函数时指定GB2312字符集。
打开 source/plugin/myrepeats/memcp.inc.php 文件,查找:
$myrepeat['comment'] = htmlspecialchars($myrepeat['comment']);
替换为:
$myrepeat['comment'] = htmlspecialchars($myrepeat['comment'], ENT_COMPAT, 'GB2312');
或者使用Discuz! X的自定义函数 dhtmlspecialchars 处理,该函数已做版本兼容性处理:
$myrepeat['comment'] = dhtmlspecialchars($myrepeat['comment']);
另 source/plugin/myrepeats/switch.inc.php 中以下代码可能也需要修改(功能尚不明确。添加马甲?),请自行评估处理:
$username = htmlspecialchars($_GET['username']);
欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截