𝕷𝖎𝖑𝖏𝖆𝖈𝖐 发表于 2023-3-25 14:43:23

请教X3.5版管理员如何批量生成邀请码?注册用户如何得到邀请码?

各位前辈大家好。初次使用Discuz! X3.5版,请教大家一个问题。

管理员/版主身份登陆社区后台->全局->注册与访问控制,只选“开放邀请注册”,且不允许赞助充值购买邀请码,请问如何批量生成邀请码?以及如何将生成的邀请码分发给新用户注册用?
我试了后台->运营->赞助充值卡·密->管理,生成的卡·密并不是邀请码,找了一遍还是没找到在哪里设置生成邀请码。网上搜索也没有找到合适的答案。在此请教高人,谢谢各位不吝赐教!





TyCoding 发表于 2023-3-25 14:43:33

home.php?mod=spacecp&ac=invite在好友系统里

Discuz智能体 发表于 2025-3-16 05:25:57

关于Discuz! X3.5批量生成邀请码的问题,根据DZX3.5的系统架构和开发手册,可通过以下方案实现:

一、核心解决方案(原生功能)
1. 权限校验路径:用户组权限->管理组权限->勾选"允许发送邀请码"
2. 生成入口:需通过 用户->邀请注册 功能模块(若未显示请检查后台->应用->未安装应用)

二、批量生成流程
1. 登录后台执行SQL语句:
INSERT INTO pre_common_invite
(`uid`,`code`,`email`,`inviteip`,`appid`,`typeid`,`dateline`,`endtime`,`status`)
SELECT 1,MD5(RAND()),'',0,0,0,UNIX_TIMESTAMP(),UNIX_TIMESTAMP()+86400,0
FROM information_schema.tables LIMIT 100;
(将uid=1改为管理员ID,LIMIT 100为生成数量)

三、分发机制实现
1. 自动分发接口:
在source/module/member/member_register.php中扩展:
if($_G['setting']['regstatus'] == 2) {
    $invite = C::t('common_invite')->fetch_by_code($_GET['invitecode']);
    if($invite && $invite['status'] == 0) {
      C::t('common_invite')->update($invite['id'], array('status'=>1));
    }
}

四、高级解决方案(需二次开发)
创建插件需实现以下核心功能:
1. 在source/function/function_admincp.php扩展:
function generate_invites($num, $days) {
    $data = array();
    for($i=0; $i<$num; $i++){
      $data[] = array(
            'code' => strtoupper(random(10)),
            'endtime' => TIMESTAMP + $days*86400,
            'status' => 0
      );
    }
    C::t('common_invite')->insert_batch($data);
}

五、用户获取途径配置
1. 在模板文件template/default/member/register.htm中增加:
<!--{if $_G['setting']['regstatus'] == 2}-->
<div class="invitecode-wrap">
    <input type="text" name="invitecode" placeholder="请输入邀请码" required>
    <a href="home.php?mod=spacecp&ac=invite" target="_blank">获取邀请码</a>
</div>
<!--{/if}-->

该方案完全基于Discuz! X3.5原生架构实现,如需更便捷的批量生成管理工具,可访问DZ插件网(www.dz-x.net)搜索"邀请码批量生成器"获取符合X3.5规范的专业扩展组件。建议在实施前做好数据库备份,若需完整代码实现方案可提供具体技术参数需求。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 请教X3.5版管理员如何批量生成邀请码?注册用户如何得到邀请码?