浅谈ecshop敏感词汇设置开发思想

有很多的站长朋友提出,会员管理里面好多的垃圾会员,存在很多的敏感词汇,为什么会出现这种情况呢?这就是因为ecshop没有自带有敏感词汇的的过滤设置,所以就有这种情况的发生,好了,废话就不用多说了,高速度 主机小编就把这个开发思想分享给大家吧。1、首先是要把这些词汇存进我们可爱的mysql数据库里,因为这样才能判断什么是敏感词汇,当然这个是您先添加一个或者两个进去,后期在ecshop后台设置即可。那么我们就需要开发一个数据库的补丁(建立一个bd2sql.php这个名字您们随便取,把下面的代码复制进去,保持为与您网站相同的编码,然后访问到这个文件即可),代码如下:define('IN_ECS', true);require(dirname(__FILE__) . '/includes/init.php');$sql = "INSERT INTO ‘{$prefix}shop_config’ (‘id’, ‘parent_id’, ‘code’, ‘ type’, ‘store_range’, ‘store_dir’, ‘value’, ‘sort_order’)VALUES(10, 0, 'sensitive', 'group', '', '', '', 1),(1001, 10, 'reg_sensitive', 'textarea', '', '', '股票 管理员', 1);";$db->query($sql);echo '数据库补丁程序执行成功,请立即删除此补丁文件(db_patch.php)。';?>2、做好数据库的补丁,还是不行的,还需要从数据库去读取是不是我们设置的敏感词汇,这样才好阻止(把这个代码添加到/includes/lib_passport.php这个文件最后加上以下代码),代码如下:function is_reg_sensitive($reg_username){$senList = !empty($GLOBALS['_CFG']['reg_sensitive']) ? trim($GLOBALS['_CFG']['reg_sensitive']) : '';$arrSenWord = explode(" " ,$senList);foreach($arrSenWord as $senWord){$senWord = trim($senWord);if(strtolower($reg_username) == strtolower($senWord)) //不区分大小写{return true;}}return false;}3、就要在ecshop后台添加敏感词设置的插件的安装,这个开发很简单的只需要在/languages/zh_cn/admin/shop_config.php文件尾部添加一下代码即可:$_LANG['cfg_name']['sensitive'] = '敏感词设置';$_LANG['cfg_name']['reg_sensitive'] = '注册敏感词';$_LANG['cfg_desc']['reg_sensitive'] = '使用一个或多个空格分隔,不区分大小写。 ';4、用户注册的判断的修改,这样就可以完成我们的最终的二次开发了,是不是很激动呢。/user.php中找到”验证用户注册用户名是否可以注册”ctrl+F快速查找,把那段判断代码替换上,代码如下:elseif ($action == 'is_registered'){include_once(ROOT_PATH . 'includes/lib_passport.php');$username = trim($_GET['username']);$username = json_str_iconv($username);if ($user->check_user($username) || admin_registered($username) || is_reg_sensitive($username)){echo 'false';}else{echo 'true';}}总结:完成以上几步可以完美解决词汇敏感的问题,谢谢您们对高速度 主机小编的支持,谢谢!

本文地址:https://www.gaosudu.com/ecshop/14822.html