昨天有个客户要求提交订单,加个手机验证码下单,防止恶意刷单,于是就有了下面的代码:
前端form表单:
<div class="wfbdbox">
<label class="wfbdxx"><em>*</em>手机号码</label>
<div class="wftextbox">
<input type="text" name="mobile" id="wfmob">
</div>
</div>
<div class="wfbdbox">
<label class="wfbdxx"><em>*</em>验证码</label>
<div class="wftextcode">
<input type="text" name="yzm" id="yzm">
<button type="button" class="yzmps">获取验证码</button>
</div>
</div>
ajax异步请求短信接口,发送短信验证码:
$('.yzmps').click(function () {
$.ajax({
type: "post",
url: "smsyzm.php", //后台代码文件名
data: {
yzmtel:$('#wfmob').val()//获取输入的手机号
},
// dataType: "json",
success:function(data){
console.log(data);
alert('验证码发送成功,请注意查收!');
//alert(data);
$('.yzmps').attr('disabled',"true");
tcode = setInterval("ReSend()", 1000);//设置定时器,60秒后容许再次发送
localStorage.setItem('code',JSON.stringify(data));
},
error:function(err){
console.log(err);
}
});
});
//定时器
function ReSend() {
var Wait60Second="60秒后重发";
var TotalCount = $("#hf_timecount").val();
TotalCount = TotalCount - 1;
$("#hf_timecount").val(TotalCount);
if (TotalCount == 0) {
ReSetSend();
}
else {
$(".yzmps").text(Wait60Second.replace("60", TotalCount));
}
}
//清除定时器
function ReSetSend() {
clearInterval(tcode);
$("#hf_timecount").val("60");
$(".yzmps").text("获取验证码");
$('.yzmps').removeAttr("disabled");
}
//提交表单验证输入验证码是否正解
function checkForm(){
.......中间省略其它代码.....
var code = parseInt(JSON.parse(localStorage.getItem('code')));
var yzm =parseInt($('#yzm').val());
if (yzm==""){
alert('验证码不能为空!');
document.wfform.yzm.focus();
return false;
}
if(yzm != code){
alert('验证码输入错误');
document.wfform.yzm.focus();
return false;
}
.......中间省略其它代码.....
}
php后端请求接口返回短信验证码:(需要先找第三方平台申请短信接口,下载sdk文档,api接口使用大同小异,以下仅代参考)
//载入ucpass类
require_once('lib/Ucpaas.class.php');
require_once('serverSid.php');
$appid = "******************"; //应用的ID,可在开发者控制台内的短信产品下查看
$templateid = "111111"; //可在后台短信产品→选择接入的应用→短信模板-模板ID,查看该模板ID
$num = rand(1000,9999); //随机产生四位数字的验证码
$param = $num; //多个参数使用英文逗号隔开(如:param=“a,b,c”),如为参数则留空
$mobile = $_POST['yzmtel'];
$uid = "";
$res = $ucpass->SendSms($appid,$templateid,$param,$mobile,$uid);
$res=json_decode($res,true);
if($res['code']=='000000'){
echo $num;
//return ['code'=>1,'msg'=>'验证码发送,请查收!','data'=>$num];
}else{
//return ['code'=>-1,'msg'=>'验证码发送失败,请重新获取!'];
echo '验证码发送失败';
}
好了,以上就是手机短信验证码开发流程。写下此文以记之,以便后来者不便之时用之!