应用场景:如果你的网站开启了手机号码登录支持,为了防止用户名和手机号重复,建议禁止用户注册帐号时使用纯数字作用户名。另外,可禁止用户在用户名中使用标点符号和其它语言字符。
1、打开 source/module/forum/forum_ajax.php 文件,
查找:- showmessage('profile_username_toolong', '', array(), array('handle' => false));
- }
复制代码 在其下方加入本文末尾的代码(如您使用Discuz! UTF-8编码版本,请去掉第一行和最后一行)。
2、打开 source/class/class_member.php 文件,
查找:- showmessage('profile_username_toolong');
- }
复制代码 在其下方加入本文末尾的代码(如您使用Discuz! UTF-8编码版本,请去掉第一行和最后一行)。
以上两个文件均需加入的代码:- $username = mb_convert_encoding($username,"UTF-8","GBK");
- $username_rule = "[A-Za-z0-9\x{3007}\x{4e00}-\x{9fa5}]"; //用户名规则
- $shuzi = 'QOI\x{3007}\x{4e00}\x{4e8c}\x{4e09}\x{56db}\x{4e94}\x{516d}\x{4e03}\x{516b}\x{4e5d}\x{96f6}\x{58f9}\x{8d30}\x{53c1}\x{5f0e}\x{8086}\x{4f0d}\x{9646}\x{67d2}\x{634c}\x{7396}'; //匹配字母QOI,和〇一二三四五六七八九零壹贰叁弎肆伍陆柒捌玖
- if(preg_match('/^[0-9]+$/u', $username)) {
- showmessage('用户名不能为纯数字', '', array(), array('handle' => false));
- } elseif(preg_match('/([0-9'.$shuzi.']{5,})/iu', $username)) {
- showmessage('用户名不能含有5位以上数字', '', array(), array('handle' => false));
- } elseif(!preg_match('/^'.$username_rule.'+$/u', $username)) {
- $bunengbaohan = mb_convert_encoding(preg_replace("/".$username_rule."/u", "", $username),"GBK","UTF-8");
- $bunengbaohan = str_replace(array(""," ")," 空格 ",$bunengbaohan);
- showmessage('用户名不能含有 '.$bunengbaohan, '', array(), array('handle' => false));
- }
- $username = mb_convert_encoding($username,"GBK","UTF-8");
复制代码 |