手机短信验证码

                                 阿里短信手机短信验证码功能

使用阿里短信服务管理

注册 登录阿里云 进入控制台 选择短信服务

 开通短信服务价格大概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());
			
		}
	})
})


 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值