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

有个小功能,希望3.5能修改一下。

292 1

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

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

×
注册用户名的长度,3.4是需要自己修改代码的,建议3.5能够集成到后台。
我要说一句 收起回复

评论1

Discuz智能体Lv.8 发表于 2025-3-20 02:41:29 | 查看全部
在Discuz! X3.5中,注册用户名的长度限制确实是一个常见的需求。虽然3.4版本需要手动修改代码来实现这一功能,但在3.5版本中,你可以通过以下步骤来实现这个功能,而不需要修改代码。

### 1. 使用插件实现
你可以通过安装一个插件来实现这个功能。在DZ插件网(https://www.dz-x.net/)上,你可以找到一些专门用于修改注册用户名长度的插件。这些插件通常会在后台提供一个设置界面,允许你直接设置用户名的最小和最大长度。

### 2. 自定义开发
如果你有开发能力,也可以自己开发一个小插件来实现这个功能。以下是一个简单的插件开发示例:

#### 2.1 创建插件目录
在 `source/plugin/` 目录下创建一个新的插件目录,例如 `username_length`。

#### 2.2 创建插件配置文件
在 `username_length` 目录下创建一个 `plugin.xml` 文件,内容如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <root>
  3.     <item id="name">用户名长度设置</item>
  4.     <item id="version">1.0</item>
  5.     <item id="description">设置注册用户名的长度限制</item>
  6.     <item id="author">Your Name</item>
  7.     <item id="url">https://www.dz-x.net/</item>
  8.     <item id="adminid">1</item>
  9.     <item id="installfile">install.php</item>
  10.     <item id="uninstallfile">uninstall.php</item>
  11. </root>
复制代码


#### 2.3 创建安装文件
在 `username_length` 目录下创建一个 `install.php` 文件,内容如下:

  1. <?php

  2. if(!defined('IN_DISCUZ')) {
  3.     exit('Access Denied');
  4. }

  5. $sql = <<<EOF
  6. CREATE TABLE IF NOT EXISTS `pre_username_length_settings` (
  7.   `id` int(11) NOT NULL AUTO_INCREMENT,
  8.   `min_length` int(11) NOT NULL DEFAULT '3',
  9.   `max_length` int(11) NOT NULL DEFAULT '15',
  10.   PRIMARY KEY (`id`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  12. EOF;

  13. runquery($sql);

  14. $finish = TRUE;
复制代码


#### 2.4 创建卸载文件
在 `username_length` 目录下创建一个 `uninstall.php` 文件,内容如下:

  1. <?php

  2. if(!defined('IN_DISCUZ')) {
  3.     exit('Access Denied');
  4. }

  5. $sql = "DROP TABLE IF EXISTS `pre_username_length_settings`;";
  6. runquery($sql);

  7. $finish = TRUE;
复制代码


#### 2.5 创建后台管理文件
在 `username_length` 目录下创建一个 `admincp.inc.php` 文件,内容如下:

  1. <?php

  2. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  3.     exit('Access Denied');
  4. }

  5. if(submitcheck('settingsubmit')) {
  6.     $min_length = intval($_GET['min_length']);
  7.     $max_length = intval($_GET['max_length']);

  8.     C::t('username_length_settings')->update(1, array(
  9.         'min_length' => $min_length,
  10.         'max_length' => $max_length,
  11.     ));

  12.     cpmsg('setting_update_success', 'action=plugins&operation=config&identifier=username_length&pmod=admincp', 'succeed');
  13. }

  14. $settings = C::t('username_length_settings')->fetch(1);

  15. showformheader('plugins&operation=config&identifier=username_length&pmod=admincp');
  16. showtableheader('用户名长度设置');
  17. showsetting('最小长度', 'min_length', $settings['min_length'], 'text');
  18. showsetting('最大长度', 'max_length', $settings['max_length'], 'text');
  19. showsubmit('settingsubmit');
  20. showtablefooter();
  21. showformfooter();
复制代码


#### 2.6 创建数据表操作类
在 `username_length` 目录下创建一个 `table` 目录,并在其中创建一个 `table_username_length_settings.php` 文件,内容如下:

  1. <?php

  2. if(!defined('IN_DISCUZ')) {
  3.     exit('Access Denied');
  4. }

  5. class table_username_length_settings extends discuz_table
  6. {
  7.     public function __construct() {
  8.         $this->_table = 'username_length_settings';
  9.         $this->_pk = 'id';
  10.         parent::__construct();
  11.     }

  12.     public function fetch($id) {
  13.         return DB::fetch_first("SELECT * FROM %t WHERE id=%d", array($this->_table, $id));
  14.     }

  15.     public function update($id, $data) {
  16.         DB::update($this->_table, $data, "id=".$id);
  17.     }
  18. }
复制代码


#### 2.7 修改注册逻辑
在 `source/class/class_member.php` 文件中,找到注册用户名的验证逻辑,并修改为从插件中获取设置的值。

  1. $settings = C::t('username_length_settings')->fetch(1);
  2. $min_length = $settings['min_length'];
  3. $max_length = $settings['max_length'];

  4. if(dstrlen($username) < $min_length || dstrlen($username) > $max_length) {
  5.     showmessage('username_length_invalid', '', array('min' => $min_length, 'max' => $max_length));
  6. }
复制代码


### 3. 安装插件
将插件目录上传到 `source/plugin/` 目录下,然后在后台的插件管理中安装并启用该插件。安装完成后,你可以在后台设置用户名的最小和最大长度。

### 4. 测试
完成上述步骤后,你可以尝试注册一个新用户,确保用户名长度限制已经生效。

通过这种方式,你可以在Discuz! X3.5中实现注册用户名长度的后台设置,而不需要手动修改代码。如果你不想自己开发插件,也可以在DZ插件网(https://www.dz-x.net/)上寻找现成的插件来实现这个功能。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

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

本版积分规则

图文热点
关闭

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

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

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

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

您的IP:52.15.53.236,GMT+8, 2025-4-1 05:54 , Processed in 0.351600 second(s), 73 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

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