帝国cms会员注册时 总是提示'此手机号码已被注册' 如何解决

👁 2 次浏览 🕔 2026-07-27 17:52:21

正文内容

当你不强制手机、把手机字段留空时,$phno 就是空字符串 '',SQL 变成:select count(*) from ... where phno=''6vZ青帆网络
而你的会员库里早期大量会员的手机号本来就是空的(因为以前也不强制手机),于是 where phno='' 会统计到所有这些空记录,6vZ青帆网络
$num 很大,$num >= regphonly 必然成立 → 直接报"此手机号码已被注册"。6vZ青帆网络
这就是你"总是"提示的原因,跟用户填什么手机号无关(只要留空就中招)。6vZ青帆网络

6vZ青帆网络
解决方案6vZ青帆网络
6vZ青帆网络
方案 A(推荐,不改代码) 后台把 regphonly 设为 0(不限制手机号注册数):6vZ青帆网络
    路径:帝国CMS后台 → 系统 → 系统设置 → 参数设置 → 切到「会员设置」标签 → 找 "一个手机号最多允许注册帐号数",改为 0。6vZ青帆网络
    这样注册流程不再做任何手机唯一性校验,空手机也能正常注册。代价是同一手机号可以无限注册(既然你本来就允许不填手机,这一般无影响)。6vZ青帆网络
6vZ青帆网络
方案 B(保留手机限制功能,又允许部分人不填手机) 需要改内核 member_registerfun.php 第 172 行,把条件改成 if($pr['regphonly'] && $phno),即"仅当手机号非空时才做唯一性校验"。6vZ青帆网络