phpcms V9的敏感词(在扩展中管理)自带有2个模式,1是一般,采用的是替换,2是危险,直接去除,实际上也是替换,替换为空了而已,今天加个第三种模式,告知用户存在敏感词,3提示
修改方法:
先处理语言包
/phpcms/languages/zh-cn/admin.lang.php
增加一行
$LANG['badword_showmessage'] = '提示';
然后/phpcms/modules/admin/badword.php的17行改为:
$level = array(1=>L('general'),2=>L('danger'),3=>L('badword_showmessage'));
/phpcms/modules/admin/templates/badword_add.tpl.php 34行下面增加
<option value="3"><?php echo L('badword_showmessage')?></option>
/phpcms/modules/admin/templates/badword_edit.tpl.php 42行下面增加
<option <?php echo $level3;?> value="3"><?php echo L('badword_showmessage')?></option>
32-38行改为:
<?php
if($level=='1'){
$level1 = "selected";
}else if($level=='2'){
$level2 = "selected";
}else{
$level3 = "selected";
}
?>
/phpcms/model/badword_model.class.php里的replace_badword方法整体换成:
function replace_badword($str) {
//读取敏感词缓存
$badword_cache = getcache('badword','commons');
foreach($badword_cache as $data){
if($data['level'] == '3'){
showmessage('内容存在非法词汇', HTTP_REFERER);
} else {
if($data['replaceword'] == ''){
$replaceword_new ='*';
} else {
$replaceword_new = $data['replaceword'];
}
$replaceword[] = ($data['level']=='1') ? $replaceword_new : '';
$replace[] = $data['badword'];
}
}
$str = str_replace($replace, $replaceword, $str);
return $str;
}
这样就增加了一个3提示的敏感词等级
使用方法:
接下来就是敏感词的使用方法,后台添加部分不谈,自己去加就行,只谈不支持的地方引入敏感词接口,以表单向导为例:
打开/phpcms/modules/formguide/index.php
找到show()方法里58行的
$data = new_addslashes($_POST['info']);
改成:
$badword = pc_base::load_model('badword_model');//引入敏感词数据模型$data = $badword->replace_badword(new_addslashes($_POST['info']));//使用数据模型里的replace_badword进行处理敏感词,$_POST['info']是接收用户提交的信息,用到其他地方主要改这个,也就是需要敏感词处理的部分。
这样就可以实现敏感词的替换,过滤或者提示用户了
本文转自周涛的个人博客:https://www.zhoutao.org/blog/2022/06/5747.html
发表评论 取消回复