阿里短信手机短信验证码功能
使用阿里短信服务管理
注册 登录阿里云 进入控制台 选择短信服务
开通短信服务价格大概0.04元一条 貌似有100条免费试用。
点击新手指导可查看文档
1 按照顺序进行注册登录实名认证
2 创建AccessKey
3 进入短信服务控制台 创建签名管理 签名模板
这里 只有签名管理的工单号 和 模板管理的模版CODE 后面代码中会用到
其中模板内容 例子:您的校验码:${code},您正在注册成为会员,感谢您的支持!code是后面代码里的验证码
下面是代码处理:下载SDK及DEMO
选择php
接着是更改api_demo/SmsDemo.php里的配置信息
SmsDemo.php最后调用了3个方法可注释掉sendBatchSms()和querySendDetails()只测试sendSms();
$accessKeyId $accessKeySecret 的值改成自己的AccessKey ID和AccessKey Secret
$request->setPhoneNumbers()方法填写号码,这里做测试填一下自己的手机号;
$request->setSignName();这里填自己的签名名称
$request->setTemplateCode(0这里填自己的模板CODE
$request->setTemplateParam()里的code值填写要发送的验证码
其它都是可选的可不做处理
此时便可放在本地服务器127.0.0.1/api_demo/SmsDemo.php便可看到页面信息,收到手机验证码后表示成功
[message]=OK 表示成功
问题:如何实现给任何手机号注册并实现随机6位验证码并验证输入的验证码是否正确
html:
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title></title><script type="text/javascript" src="jquery.min.js"></script><script type="text/javascript" src="index.js"></script>
</head>
<body>手机号:<input type="text" name="number" id="number"><button>点击获取验证码</button>输入验证码:<input type="text" name="code" id="code"><input type="button" name="" value="提交" id="submit">
</body>
</html>
更改api_demo/SmsDemo.php内容
sendSms()方法:
无需return $acsResponse
直接替换成一下代码
if($acsResponse->Code=='OK'){echo $request->getTemplateParam(); //json字符串 包含验证码}elseif($acsResponse->Code=='isv.MOBILE_NUMBER_ILLEGAL'){echo "-1"; //用于ajax回调 手机号格式出错}elseif($acsResponse->Code=='isv.BUSINESS_LIMIT_CONTROL'){echo "-2"; //用于ajax回调 超过限制 一个手机号一天条数}else{echo "-3"; //用于ajax回调 其它错误};
后面直接调用sendSms()方法就行了
// 调用示例:
set_time_limit(0);
header('Content-Type: text/plain; charset=utf-8');SmsDemo::sendSms();
再创建一个6位随机数的方法:
// 六位随机数public static function sexNum() {$_num = '';for($i=0;$i<6;$i++){$_num .= mt_rand(0,9);}return $_num;}
在 $request->setTemplateParam更改code的值: "code"=>SmsDemo::sexNum(),
使用ajax获取验证码
步骤:url设置在api_demo/SmsDemo.php;data数据把number也就是填写的手机号传入,并更改api_demo/SmsDemo.php
里 $request->setPhoneNumbers("{$_POST['number']}");
提交成功后会返回对应信息 如果返回1(可以在SmsDemo.php设置的)表示json字符串,转化为数组提取出code验证码
接着就是js设置的一些效果过60秒之后才能再次点击
最后再验证验证码是否正确
index.js:
$(function(){var code = ''; //用于存放发出的验证码// var a = {"code":"595266","product":"dsd"};var timer = 0; //定时器$('button').click(function(){var t = 60; //点击的时候重新赋值为60$.ajax({type:'POST',url:'api_demo/SmsDemo.php',data:{number:$('#number').val(), //手机号},success:function(text){switch(text){case '-1':alert('手机号格式出错');break;case '-2':alert('超过限制');break;case '-3':alert('其他错误');break;default:// {"code":"595266","product":"dsd"}// 成功返回验证码message = JSON.parse(text); //把json字符串转化为数组// alert(typeof message)// alert(message.code);code = message.code; //得到验证码// alert(code);// 定时器timer = setInterval(function(){$('button').attr('disabled',true); //点击发送验证码功能暂时失效$('button').html(t+'s后重新发送');t--; if(t==0){$('button').attr('disabled',false);$('button').html('点击获取验证码');clearInterval(timer); //清除定时器}},1000);}},})})// 验证验证码$('#submit').click(function(){if($('#code').val()==code){alert('注册成功');}else{alert('注册失败');alert(code);alert($('#code').val());}})
})