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

点赞(0) 打赏

Comment list 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部