威宁热线

威宁团菜到家

[技术分享] discuz 限制只能中文注册用户名称

  [复制链接]
weining 发表于 2021-1-2 12:54:35 | 显示全部楼层 |阅读模式
1:修改uc_client\model\user.php
  1. <p> function check_username($username) {</p><p>  $guestexp = '\xA1\xA1|\xAC\xA3|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';</p><p>  $len = $this->dstrlen($username);</p><p>  if($len > 15 || $len < 3 || !(preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$username)) || preg_match("/\s+|^c:\\con\\con|[%,\*"\s\<\>\&]|$guestexp/is", $username)) {</p><p>   return FALSE;</p><p>  } else {</p><p>   return TRUE;</p><p>  }</p><p> }</p>
复制代码

2:修改source\language\lang_message.php
在229行左右加 一个错误消息
  1. <p>  'profile_username_tooshort' => '抱歉,您输入的用户名小于 3 个字符,请输入一个较长的用户名',</p><p>    'profile_username_notallchinese' => '抱歉,用户名必须全部是中文',</p><p>'profile_username_toolong' => '抱歉,您的用户名超过 15 个字符,请输入一个较短的用户名',</p>
复制代码

3:修改source\module\forum\forum_ajax.php
在20行左右加一个判断
  1. <p>if($usernamelen < 3) {</p><p>  showmessage('profile_username_tooshort', '', array(), array('handle' => false));</p><p> } elseif($usernamelen > 15) {</p><p>  showmessage('profile_username_toolong', '', array(), array('handle' => false));</p><p> }</p><p>  if(!(preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$username))) {</p><p>   showmessage('profile_username_notallchinese', '', array(), array('handle' => false));</p><p> }</p>
复制代码

4:修改source\class\class_member.php
在581行左右加一个判断
  1. <p>if($usernamelen < 3) {</p><p>     showmessage('profile_username_tooshort');</p><p>    } elseif($usernamelen > 15) {</p><p>     showmessage('profile_username_toolong');</p><p>    }</p><p>    if(!(preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$username))) {</p><p>       showmessage('profile_username_notallchinese');</p><p>    }</p>
复制代码



回复

使用道具 举报

威宁热线 发表于 2021-1-4 18:27:15 | 显示全部楼层
这个也可以
回复

使用道具 举报

小城世界 发表于 2021-1-7 20:39:27 | 显示全部楼层
回复

使用道具 举报

草海人 发表于 2021-1-8 23:31:17 | 显示全部楼层
限制几个中文名可以设置吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表