广告位招租 qq245909083
广告
广告

Discuz! X “我的马甲 2.4”插件在PHP5.4+下无法显示马甲备注的解决方法

分享时间:2020-03-08 374 热度℃
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']);
返回顶部