老张小站

  1. 欢迎光临

    感谢访问老张的博客!

  • 1
3,875

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

分类 网站技术/村民张先生 发布于 2017-04-25 21:42
0

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

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");
欢迎转载分享,转载请注明 来源:大张小站 https://www.zhang.cq.cn/20171820.html
若您喜欢这篇文章,欢迎订阅老张小站以获得最新内容。 / 欢迎交流探讨,请发电子邮件至 mail[at]vdazhang.com 。


欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截