敏感词一般是指带有敏感政治倾向(或反执政党倾向)、暴力倾向、不健康色彩的词或不文明语。本程序防止恶意使用敏感词作为用户名注册。本功能基于2.7.3,其他版本的用户请参考代码研究。
程序的本意是禁止注册“admin”这样的词语,追求算法和效率的朋友请参考Discuz!敏感词算法。小程序,仅供参考。
一键安装
安装指南
第一步:将安装文件覆盖到网站根目录。
第二步:输入”站点路径/db_patch.php”,如”http://ecshop.phpally.com/db_patch.php”一键完成安装,安装完成后,请立即删除db_patch.php。
后台设置
注册效果
开发指南
一、/db_patch.php
/db_patch.php
PHP
/**
* ECSHOP 敏感词管理 数据库补丁
* ----------------------------------------------------------------------------
* 码农笔记 程序员搬砖之路
* http://www.phpally.com
* ----------------------------------------------------------------------------
* @author: Jack
* @email: 349392900@qq.com
* @date: 2012-11-26
*/
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)。';
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
* ECSHOP 敏感词管理 数据库补丁
* ----------------------------------------------------------------------------
* 码农笔记 程序员搬砖之路
* http://www.phpally.com
* ----------------------------------------------------------------------------
* @author: Jack
* @email: 349392900@qq.com
* @date: 2012-11-26
*/
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)。';
?>
二、编辑/includes/lib_passport.php,文件尾添加
/includes/lib_passport.php
PHP
/**
* 判断用户名是否在敏感词列表中
* @param string $reg_username 注册用户名
* @return boolean
*/
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;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* 判断用户名是否在敏感词列表中
* @param string $reg_username 注册用户名
* @return boolean
*/
functionis_reg_sensitive($reg_username)
{
$senList=!empty($GLOBALS['_CFG']['reg_sensitive'])?trim($GLOBALS['_CFG']['reg_sensitive']):'';
$arrSenWord=explode(" ",$senList);
foreach($arrSenWordas$senWord)
{
$senWord=trim($senWord);
if(strtolower($reg_username)==strtolower($senWord))//不区分大小写
{
returntrue;
}
}
returnfalse;
}
三、编辑/languages/zh_cn/admin/shop_config.php,文件尾添加
/languages/zh_cn/admin/shop_config.php
PHP
/* 敏感词设置 */
$_LANG['cfg_name']['sensitive'] = '敏感词设置';
$_LANG['cfg_name']['reg_sensitive'] = '注册敏感词';
$_LANG['cfg_desc']['reg_sensitive'] = '使用一个或多个空格分隔,不区分大小写。';
1
2
3
4
/* 敏感词设置 */
$_LANG['cfg_name']['sensitive']='敏感词设置';
$_LANG['cfg_name']['reg_sensitive']='注册敏感词';
$_LANG['cfg_desc']['reg_sensitive']='使用一个或多个空格分隔,不区分大小写。';
四、编辑/user.php,查找
/user.php
PHP
/* 验证用户注册用户名是否可以注册 */
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))
{
echo 'false';
}
else
{
echo 'true';
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* 验证用户注册用户名是否可以注册 */
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))
{
echo'false';
}
else
{
echo'true';
}
}
替换为
/user.php
PHP
/* 验证用户注册用户名是否可以注册 */
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';
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* 验证用户注册用户名是否可以注册 */
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';
}
}
五、编辑/languages/zh_cn/user.php ,查找
/languages/zh_cn/user.php
PHP
$_LANG['msg_un_registered'] = '用户名已经存在,请重新输入';
$_LANG['passport_js']['msg_un_registered'] = '* 用户名已经存在,请重新输入';
1
2
$_LANG['msg_un_registered']='用户名已经存在,请重新输入';
$_LANG['passport_js']['msg_un_registered']='* 用户名已经存在,请重新输入';
替换为
/languages/zh_cn/user.php
PHP
$_LANG['msg_un_registered'] = '用户名已经存在或不允许注册,请重新输入。';
$_LANG['passport_js']['msg_un_registered'] = '* 用户名已经存在或不允许注册,请重新输入。';
1
2
$_LANG['msg_un_registered']='用户名已经存在或不允许注册,请重新输入。';
$_LANG['passport_js']['msg_un_registered']='* 用户名已经存在或不允许注册,请重新输入。';
订阅本站、关注微博可免费获取技术支持,尊重劳动成果,转载请注明出处。