阿里云短信插件按此修改后,阿里云短信插件才可以正常发送短信,同时用户绑定手机号码后,可实现三张用户表的手机号同步更新。
1. 发送验证码请求的触发时间不对,需要修改esmsfun.php的esms_eShowSendButton() 函数代码,让 fetch() 立即发送请求,而不是等倒计时结束后才触发。
<script type="text/javascript"> var ephmcountdown<?=$vpre?>=<?=$sec?>; // 设置倒计时
function ephmsettime<?=$vpre?>(obj) { var emtype = <?=$mtype?>; var ephno = document.getElementById('esendphmno<?=$vpre?>').value; var eprtype = document.getElementById('esendphmprt<?=$vpre?>').value; var timestrjs = Math.floor(Date.now() / 1000); // 当前时间戳
<?php if(!$public_r['phmckst']) { ?> var eformkey = document.getElementById('<?=$formkey_varname?>na<?=$vpre?>').value; <?php } ?>
if (!ephno) { alert('请输入手机号'); return; }
// ✅ **立即发送请求,而不是等倒计时结束** document.getElementById('esendphmpage<?=$vpre?>').src = '<?=$public_r['newsurl']?>e/extenddef/esms/doaction.php?enews=DoSendPhm&smtype=' + emtype + '&sphno=' + ephno + '&stime=' + timestrjs + '&<?=$formkey_varname?>na=' + eformkey + '&prtype=' + eprtype; console.log("发送验证码请求已触发:", document.getElementById('esendphmpage<?=$vpre?>').src);
// **开始倒计时** obj.disabled = true; function countdown() { if (ephmcountdown<?=$vpre?> == 0) { obj.disabled = false; obj.value = "发送验证码"; ephmcountdown<?=$vpre?> = <?=$sec?>; // 重置倒计时 } else { obj.value = "重新发送 (" + ephmcountdown<?=$vpre?> + ")"; ephmcountdown<?=$vpre?>--; setTimeout(countdown, 1000); } } countdown(); } </script>
2.TemplateParam 里多了 "product": "",但验证码的短信模板不需要 product 变量,导致阿里云api报错{"Code":"isv.TEMPLATE_PARAMS_ILLEGAL","Message":"params must be [a-zA-Z0-9] for verification sms"}。
需要把esmsplus.php大概85行的代码注释掉。
//$esmsr['smstempvar']['product']=$esmsconfig['smssitename']; //网站名称
3.后台手机短信设置:验证码超时时间和短信发送间隔时间两个参数应该弄反了。
4.后台管理会员资料,已绑定的手机号不能正常显示。应在插件esmsfun.php488行//新增:同步更新两个关联表的手机号码字段**
$empire->query("UPDATE {$dbtbpre}enewsmemberadd SET phone='$phno' WHERE userid='$uid'"); $empire->query("UPDATE {$dbtbpre}enewsmember SET phno='$phno' WHERE userid='$uid'");
|