Discuz! X3.* 用户名禁用纯数字,只能含有汉字、字母或数字的方法-Discuz教程下载

Discuz! X3.* 用户名禁用纯数字,只能含有汉字、字母或数字的方法

开通本站Svip会员,全站资源免费下
应用场景:如果你的网站开启了手机号码登录支持,为了防止用户名和手机号重复,建议禁止用户注册帐号时使用纯数字作用户名。另外,可禁止用户在用户名中使用标点符号和其它语言字符。

1、打开 source/module/forum/forum_ajax.php 文件,
查找:
  1.                 showmessage('profile_username_toolong', '', array(), array('handle' => false));
  2.         }
复制代码
在其下方加入本文末尾的代码(如您使用Discuz! UTF-8编码版本,请去掉第一行和最后一行)。

2、打开 source/class/class_member.php 文件,
查找:
  1.                                         showmessage('profile_username_toolong');
  2.                                 }
复制代码
在其下方加入本文末尾的代码(如您使用Discuz! UTF-8编码版本,请去掉第一行和最后一行)。

以上两个文件均需加入的代码:
  1.                                 $username = mb_convert_encoding($username,"UTF-8","GBK");
  2.                                 $username_rule = "[A-Za-z0-9\x{3007}\x{4e00}-\x{9fa5}]"; //用户名规则
  3.                                 $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,和〇一二三四五六七八九零壹贰叁弎肆伍陆柒捌玖
  4.                                 if(preg_match('/^[0-9]+$/u', $username)) {
  5.                                         showmessage('用户名不能为纯数字', '', array(), array('handle' => false));
  6.                                 } elseif(preg_match('/([0-9'.$shuzi.']{5,})/iu', $username)) {
  7.                                         showmessage('用户名不能含有5位以上数字', '', array(), array('handle' => false));
  8.                                 } elseif(!preg_match('/^'.$username_rule.'+$/u', $username)) {
  9.                                         $bunengbaohan = mb_convert_encoding(preg_replace("/".$username_rule."/u", "", $username),"GBK","UTF-8");
  10.                                         $bunengbaohan = str_replace(array(""," ")," 空格 ",$bunengbaohan);
  11.                                         showmessage('用户名不能含有 '.$bunengbaohan, '', array(), array('handle' => false));
  12.                                 }
  13.                                 $username = mb_convert_encoding($username,"GBK","UTF-8");
复制代码

全部评论 0

您需要登录后才可以回帖 立即登录
登录
0
0
0
返回顶部