首页 网络技术
  1. 正文

PHPCMS敏感词功能增强及使用方法

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']是接收用户提交的信息,用到其他地方主要改这个,也就是需要敏感词处理的部分。

这样就可以实现敏感词的替换,过滤或者提示用户了

本文标题:PHPCMS敏感词功能增强及使用方法
本文链接:https://www.qqooo.cn/post/2085.html
版权说明:网站文章均来源于手工整理和网友投稿,若有不妥之处请来信 feelym@88.com 处理,谢谢!