Discuz!应用商城(DisMall)Discuz!应用商城(DisMall)

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 599|回复: 5

[已解决] dz后台设置的词语过滤不起效果了

[复制链接]

2

主题

7

帖子

13

积分

Newbie

Rank: 1

贡献
0 点
金币
5 个
发表于 2021-12-16 14:14:37 | 显示全部楼层 |阅读模式
common_word 表数据是有的 ./source/class/discuz/discuz_censor.php 文件中
  1. public function __construct() {
  2.     global $_G;
  3.     loadcache(array('censor', 'bbcodes_display'));
  4.     $this->censor_words = !empty($_G['cache']['censor']) ? $_G['cache']['censor'] : array();
  5.     $this->bbcodes_display = $_G['cache']['bbcodes_display'][$_G['groupid']];
复制代码
但是 $this->censor_words 获取到的内容是空数组


想问下 $_G['cache']['censor'] 这个数组在哪可以查看和设置,更新过缓存也没用
回复

使用道具 举报

2

主题

7

帖子

13

积分

Newbie

Rank: 1

贡献
0 点
金币
5 个
 楼主| 发表于 2021-12-16 17:00:02 | 显示全部楼层
loadcache(array('censor', 'bbcodes_display'));


方法进去以后
  1. if(!empty($caches)) {
  2.     $cachedata = C::t('common_syscache')->fetch_all($caches);
  3.     foreach($cachedata as $cname => $data) {
  4.        if($cname == 'setting') {
  5.           $_G['setting'] = $data;
  6.        } elseif($cname == 'usergroup_'.$_G['groupid']) {
  7.              $_G['cache'][$cname] = $_G['group'] = $data;
  8.        } elseif($cname == 'style_default') {
  9.              $_G['cache'][$cname] = $_G['style'] = $data;
  10.         } elseif($cname == 'grouplevels') {
  11.             $_G['grouplevels'] = $data;
  12.         } else {
  13.             $_G['cache'][$cname] = $data;
  14.            //这里输出时 结果为空
  15.             if($cname == 'censor'){
  16.               echo '<!--';
  17.               print_r($data);
  18.              echo '-->';
  19.             }
  20.           }
  21.     }
  22.         }
复制代码


回复 支持 反对

使用道具 举报

50

主题

1040

帖子

1245

积分

管理员

Rank: 9Rank: 9Rank: 9

贡献
0 点
金币
162 个
发表于 2021-12-16 21:44:40 | 显示全部楼层
首先,这个文件是否存在 source\function\cache\cache_censor.php,然后后台更新缓存,如果全局里开了内存优化,关闭测试
回复 支持 反对

使用道具 举报

2

主题

7

帖子

13

积分

Newbie

Rank: 1

贡献
0 点
金币
5 个
 楼主| 发表于 2021-12-17 08:01:28 | 显示全部楼层
解决了,序列化储存时有问题;

直接 Db::fetch_first...有返回数据,
用   C::t('common_syscache')->fetch_all(['censor']);  就没有,看了下就是多了反序列化操作;

测试环境下对比了common_syscache 的cname = censor 的data 大小 ,少了0.02k,替换了下数据解决了;
回复 支持 反对

使用道具 举报

2

主题

7

帖子

13

积分

Newbie

Rank: 1

贡献
0 点
金币
5 个
 楼主| 发表于 2021-12-17 10:34:37 | 显示全部楼层
dashen 发表于 2021-12-16 21:44
首先,这个文件是否存在 source\function\cache\cache_censor.php,然后后台更新缓存,如果全局里开了内存 ...

你好,又有个新的问题,正式环境是3.4gbk版的,php是7.4的,在serialize的时候存到数据表 是这样的
QQ截图20211217102850.jpg
但是 unserialize 的时候 是空的;

使用php5.6的时候
QQ截图20211217103032.jpg
擼 字 变成了  擻 ]   反而是能反序列化的,
QQ截图20211217103235.jpg

请问有什么方法可以处理这个问题,因为还有好多个类似的敏感词都是这个问题
回复 支持 反对

使用道具 举报

1

主题

244

帖子

255

积分

DXGiter

Rank: 6Rank: 6Rank: 6

贡献
0 点
金币
5 个
发表于 2021-12-19 03:20:46 | 显示全部楼层
云山几万重 发表于 2021-12-17 10:34
你好,又有个新的问题,正式环境是3.4gbk版的,php是7.4的,在serialize的时候存到数据表 是这样的

但是 uns ...

你用的应该是GBK吧,尽量不要用GBK处理特殊的文字符号,否则造成的bug很难解决。
正常的常见简体字是没有这种问题的。
另外可以尝试更新到最新版本的Discuz再试试看。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz!应用中心 ( 皖ICP备16010102号 )|网站地图star

GMT+8, 2022-7-7 17:54 , Processed in 0.042087 second(s), 11 queries , Yac On.

Powered by Discuz!

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表