新闻中心

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

作者 / 无忧主机 时间 2014-06-30 16:04:42

有很多的站长朋友提出,会员管理里面好多的垃圾会员,存在很多的敏感词汇,为什么会出现这种情况呢?这就是因为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.51php.com/ecshop/14822.html

1
1
1
1
1
1
1