You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WHMCS Email Notification模块未保存域名NS至数据库的修复问询

解决WHMCS Email Notification模块不存储域名NS到数据库的问题

核心问题分析

使用Email Notification模块售卖无集成注册商的ccTLD时,模块仅发送NS变更通知但未将NS值写入WHMCS核心数据库(tbldomains表),导致用户在域名详情页看到NS字段为空,引发误解。

解决方案:在email_SaveNameservers函数中添加数据库存储逻辑

WHMCS会自动将域名ID、新NS值等参数传递给email_SaveNameservers函数,只需在该函数中新增代码,将NS值更新到tbldomains表对应的字段即可。

修改后的函数代码示例

function email_SaveNameservers($params) {
    // 保留模块原有发送通知的代码(比如邮件通知逻辑)

    // 新增:将NS存储到WHMCS数据库
    global $db;

    // 提取参数中的域名ID和NS值
    $domainId = $params['domainid'];
    $nsData = [
        'ns1' => trim($params['ns1']),
        'ns2' => trim($params['ns2']),
        'ns3' => isset($params['ns3']) ? trim($params['ns3']) : '',
        'ns4' => isset($params['ns4']) ? trim($params['ns4']) : ''
    ];

    // 更新tbldomains表中对应域名的NS记录
    $db->update('tbldomains', $nsData, ['id' => $domainId]);

    // 可选:如果需要为该TLD设置全局默认NS,可添加以下代码(按需启用)
    // $tld = $params['tld'];
    // $db->update('tld_nameservers', $nsData, ['tld' => $tld]);
}

关键注意事项

  • 参数验证:确保$params数组包含domainid、ns1、ns2等字段(WHMCS调用该函数时会自动传递)
  • 数据库操作规范:使用WHMCS内置的$db全局对象执行更新,避免原生SQL语句引发的安全问题(如SQL注入)
  • 空值处理:对ns3、ns4做空值判断,避免因未提交参数导致数据库字段被写入异常值
  • 测试验证:修改后需确认:
    • 用户保存NS后,tbldomains表对应域名的ns1-ns4字段是否正确更新
    • 用户在WHMCS前台/后台的域名详情页是否能看到正确的NS信息

参考逻辑

该实现对齐WHMCS官方注册商模块的标准逻辑:在处理NS保存请求时,先更新核心数据库记录,再执行通知或第三方同步操作。

内容的提问来源于stack exchange,提问作者Apon Aex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:42:43