·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹📱AI全功能
返回列表 发布新帖

我用的是国际版英文如何设置注册用户禁用中文名。

[复制链接]
139 9
发表于 2026-9-16 14:11:27 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
登录名禁止用中文,只能用字母和数字就行。



我用的是国际版英文如何设置注册用户禁用中文名。 设置,注册,用户,中文名,用的




用户名可以改,但登录名改不了,要改只能在数据库去改。所以开始就禁就好了,就没有后面麻烦。


因为登录名语言翻译不到,英文版的还是显示中文的。



我用的是国际版英文如何设置注册用户禁用中文名。 设置,注册,用户,中文名,用的
原因应该是字体在数据库里面所以翻译不了登录名。



想注册时用户禁用掉中文名。就好。如何设置


1 贡献

      
qkw 发表于 2026-9-15 11:15
来! 简单点的
方法如下(程序文件和模板都需要做对应修改,修改前备份文件)
1. 找到文件:source/class/class_member.php

搜索找到第 471 行:
  1. $username = $_GET['username'] ?? '';
复制代码
在它下面加三行:
  1. if($username && preg_match('/[\x{4e00}-\x{9fff}]/u', $username)) {    showmessage('用户名不能包含中文字符,请使用英文字母、数字或下划线');}
复制代码
2.模板文件template/default/member/register.php,找到下面这一整行
(注意看你自己的模板文件,手机版模板对照这个修改就可以了):
  1. <td><input type="text" id="{$this->setting['reginput']['username']}" name="" class="px" value="{echo dhtmlspecialchars($_GET[defaultusername])}" autocomplete="off" size="25" maxlength="15" required /></td>
复制代码
改法:在 required`后面/> 前面,加上`pattern 和`title`两个属性。改完后是这样:
  1. <td><input type="text" id="{$this->setting['reginput']['username']}" name="" class="px" value="{echo dhtmlspecialchars($_GET[defaultusername])}" autocomplete="off" size="25" maxlength="15" required pattern="^[a-zA-Z0-9_]+$" title="用户名只能包含英文字母、数字和下划线" /></td>
复制代码
改完后记得:
清模板缓存:后台 → 工具 → 更新缓存。      

    建筑资源吧发表于昨天 11:16

我要说一句 收起回复

评论9

独家记忆Lv.8 发表于 2026-9-16 14:11:50 | 查看全部
以X5.0 20260910为例:

完整方案:彻底禁止含中文的用户名




一、服务端修改(真正防线)

文件:source/class/class_member.php

定位方式: 在以下完整代码前插入中文检测代码
  1.                                 if(member::checkExists($username)) {
复制代码

插入代码如下:
  1.                                 if(preg_match('/[\x{4e00}-\x{9fa5}]/u', $username)) {                                        showmessage('profile_username_chinese_illegal');                                }
复制代码

插入后该位置完整效果如下:
  1.                                 if(preg_match('/[\x{4e00}-\x{9fa5}]/u', $username)) {                                        showmessage('profile_username_chinese_illegal');                                }                                if(member::checkExists($username)) {
复制代码

关键点

项目说明
正则 '/[\x{4e00}-\x{9fa5}]/u'PHP 中匹配中文,必须加 u 修饰符(UTF-8 模式)
位置放在 uc_user_register() 之前,避免 UC 端留下脏数据
showmessage('profile_username_chinese_illegal')会中断注册流程并提示用户





二、服务端语言包修改

文件:source/language/member/lang_template.php

定位方式: 在以下完整代码前插入语言项
  1.         'profile_username_protect' => '用户名包含敏感字符',
复制代码

插入代码如下:
  1.         'profile_username_chinese_illegal' => '用户名不能包含中文',
复制代码
注意:不同版本语言文件中 profile_username_protect 的中文提示可能略有差异(如"用户名包含被系统屏蔽的字符")。请先在该文件中搜索 profile_username_protect,以你站点实际内容为锚点。




三、前端修改(体验优化)

文件:static/js/register.js

定位方式: 在以下完整代码后插入中文检测代码
  1.         if(username.match(/<|>|"|\(|\)|'/ig)) {                errormessage(id, $L('username_illegal'));                return;        }
复制代码

插入代码如下:
  1.         if(/[\u4e00-\u9fa5]/.test(username)) {                errormessage(id, $L('username_chinese_illegal'));                return;        }
复制代码

插入后该位置完整效果如下:
  1.         if(username.match(/<|>|"|\(|\)|'/ig)) {                errormessage(id, $L('username_illegal'));                return;        }        if(/[\u4e00-\u9fa5]/.test(username)) {                errormessage(id, $L('username_chinese_illegal'));                return;        }        var unlen = username.replace(/[^\x00-\xff]/g, "**").length;
复制代码




四、前端语言包修改

文件:static/js/register.js 引用的 JS 语言变量所在文件

Discuz! 的 $L() 变量通常由模板通过 lang() 输出,实际文本在模板文件中。请先确认你的站点中 $L('username_illegal') 对应的中文内容出现在哪个文件(一般为 template/default/member/register.htm 或语言包)。

定位方式: 在以下完整代码后插入语言变量
  1.         'username_illegal' => '用户名包含敏感字符',
复制代码

插入代码如下:
  1.         'username_chinese_illegal' => '用户名不能包含中文',
复制代码
注意:若你的站点中 username_illegal 的中文提示不是"用户名包含敏感字符",请以实际内容为准。若该变量的输出格式与上例不同(例如前面有多余空格或使用双引号),请按实际格式仿写。





六、验证方法

    前端验证:打开注册页,输入"张三abc",失焦后应立即提示"用户名不能包含中文"。 服务端验证(关键):禁用浏览器 JS,或用 Postman/curl 直接 POST 提交含中文的 username,应返回"用户名不能包含中文"而不是注册成功。 边界测试:

输入预期结果
abc123通过
123456通过(本方案不排斥纯数字)
张三拒绝
abc张拒绝
abc_123通过
abc(全角字母)通过(不在 \u4e00-\u9fa5 范围)





七、注意事项


  • PHP 与 JS 正则写法不同:
      PHP:/[\x{4e00}-\x{9fa5}]/u(必须加 u)
    • JS:/[\u4e00-\u9fa5]/
    showmessage() 会中断流程,因此必须在 uc_user_register() 之前执行,避免 UC 端产生脏数据。 仅影响新注册:已有含中文用户名的老账号不受影响。 UC 端独立注册:如果站点允许从 UCenter 独立注册(不经社区注册流程),还需在 UCenter 注册逻辑中同步加检测。 前端语言包位置:若你无法确认 username_illegal 所在文件,可全局搜索 username_illegal 关键字定位。

这样前端提示、服务端拦截两头都堵住,才算真正改得彻底。
我要说一句 收起回复
回复 支持 反对

使用道具 举报

TyCodingLv.8 发表于 2026-9-16 14:12:37 | 查看全部
楼上的方法有问题,你这AI用的
我要说一句 收起回复
回复 支持 反对

使用道具 举报

拾光Lv.8 发表于 2026-9-16 14:13:00 | 查看全部
建筑资源吧 发表于 2026-9-15 10:51
楼上的方法有问题,你这AI用的
                沙发哥一直以来都是 AI 的传话人,习惯了。
我要说一句 收起回复
回复 支持 反对

使用道具 举报

CrystαlLv.8 发表于 2026-9-16 14:13:30 | 查看全部
算了,我还是等官网看有没有出后台设置功能就行了。
我要说一句 收起回复
回复 支持 反对

使用道具 举报

浅生Lv.8 发表于 2026-9-16 14:14:15 | 查看全部
我有个方法你可以试下
我要说一句 收起回复
回复 支持 反对

使用道具 举报

独家记忆Lv.8 发表于 2026-9-16 14:14:25 | 查看全部
来! 简单点的
我要说一句 收起回复
回复 支持 反对

使用道具 举报

TyCodingLv.8 发表于 2026-9-16 14:14:43 | 查看全部
我用的是国际版英文如何设置注册用户禁用中文名。 设置,注册,用户,中文名,用的
qkw 发表于 2026-9-15 11:15
来! 简单点的
方法如下(程序文件和模板都需要做对应修改,修改前备份文件)
1. 找到文件:source/class/class_member.php

搜索找到第 471 行:
  1. $username = $_GET['username'] ?? '';
复制代码
在它下面加三行:
  1. if($username && preg_match('/[\x{4e00}-\x{9fff}]/u', $username)) {    showmessage('用户名不能包含中文字符,请使用英文字母、数字或下划线');}
复制代码
2.模板文件template/default/member/register.php,找到下面这一整行
(注意看你自己的模板文件,手机版模板对照这个修改就可以了):
  1. <td><input type="text" id="{$this->setting['reginput']['username']}" name="" class="px" value="{echo dhtmlspecialchars($_GET[defaultusername])}" autocomplete="off" size="25" maxlength="15" required /></td>
复制代码
改法:在 required`后面/> 前面,加上`pattern 和`title`两个属性。改完后是这样:
  1. <td><input type="text" id="{$this->setting['reginput']['username']}" name="" class="px" value="{echo dhtmlspecialchars($_GET[defaultusername])}" autocomplete="off" size="25" maxlength="15" required pattern="^[a-zA-Z0-9_]+$" title="用户名只能包含英文字母、数字和下划线" /></td>
复制代码
改完后记得:
清模板缓存:后台 → 工具 → 更新缓存。
我要说一句 收起回复
回复 支持 反对

使用道具 举报

CrystαlLv.8 发表于 2026-9-16 14:15:40 | 查看全部
很多功能不是官方都会出的,很多扩展功能还是得靠第三方插件们
我要说一句 收起回复
回复 支持 反对

使用道具 举报

TyCodingLv.8 发表于 2026-9-16 14:16:02 | 查看全部
寻找方案,得到方案,测试,然后反馈,是探寻问题的基本流程。不能坐等着吃现成的
我要说一句 收起回复
回复 支持 反对

使用道具 举报

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

最新热评 加载中...
AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 ) 知道创宇云防御

您的IP:216.73.216.247(美国),GMT+8, 2026-10-28 08:01 , Processed in 1.307632 second(s), 60 queries , Gzip On, Redis On.

Powered by Discuz! X5.1 Licensed

© 2001-2026 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表