香港独立IP空间
香港php空间
美国php空间
域名注册

有很多的站长朋友提出,会员管理里面好多的垃圾会员,存在很多的敏感词汇,为什么会出现这种情况呢?这就是因为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';
}
}
总结:完成以上几步可以完美解决词汇敏感的问题,谢谢您们对无忧主机小编的支持,谢谢!

本文地址:http://www.51php.com/ecshop/14822.html

喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

阅读本文的人还阅读:


搜索技术文档