ThinkPHP5结合云之讯短信验证简单案例
总体思路:
我这里以用户注册短信验证分析:
在用户输入正确的手机号码点击注册按钮时,使用Ajax发送一个我们手动生成的验证码和手机号码一起发送到云之讯的服务后台接口,之后你的手机就会收到我们手动生成的验证码,在第一个Ajax返回成功后再发送Ajax到我们的ThinkPHP后台,同时带上用户注册输入的验证码和我们手动生成的验证码还有手机号码一起验证这两个验证码是否相同,相同就验证通过,不同就提示输入的验证码不正确。
流程如下图:
开发步骤:
-
注册和登录云之讯官网,新用户好像有体验余额。
-
创建模板
-
下载SDK文件
-
将下载的SDK文件整合到ThinkPHP项目中
-
打开Send.php文件,配置云之讯接口参数
相关参数一定要一一对应。 -
编写测试代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>云之讯短信验证测试</title>
<script src="/public/__STATIC__/layui/jquery-3.4.0.min.js"></script>
</head>
<body>
测试手机号:<input type="text" name="phone" id="phone">
手机验证码:<input type="text" name="yzm" id="yzm">
<input type="hidden" name="back_yzm" id="back_yzm">
<button id="getcode">点击获取验证码</button>
<button id="zhuce">注册</button>
</body>
<script type="text/javascript">
$(function(){
//注册操作
$("#zhuce").click(function(){
$.ajax({
url:'{:url("/index/Zhuce/dozhuce")}',
data:{'phone':$("#phone").val(),'back_yzm':$("#back_yzm").val(),'yzm':$('#yzm').val()},
type:"POST",
success:function(data){
alert(data)
}
})
})
//获取手机验证码
$("#getcode").click(function(){
$.ajax({
url:'{:url("/index/Zhuce/getcode")}',
data:{'phone':$("#phone").val()},
type:"GET",
success:function(data){
$("#back_yzm").val(data.back_yzm)
console.log(data)
alert("验证码已发送到你的手机,请验证!")
}
})
})
})
</script>
</html>
前端界面如下:
后台代码:
<?php
namespace app\index\controller;
use think\Controller;
use sms\Send; //引用云之讯SDK文件
class Zhuce
{
public function zhuce_view(){
return view('zhece/zhuce_view');
}
public function getcode(){
$phone = $_GET['phone'];
//生成六位数的随机验证码
$authnum=null;
srand((double)microtime()*1000000);//create a random number feed.
$ychar="0,1,2,3,4,5,6,7,8,9";
$list=explode(",",$ychar);
for($i=0;$i<6;$i++){
$randnum=rand(0,9); // 10+26;
$authnum.=$list[$randnum];
}
//发送该验证码和手机号到云之讯后台
$send = new Send();
$pin=$authnum;
$phone=$phone;
$send->SendSms($pin,$phone);
//返回该验证码到前端,用于注册时校验
$data = ['back_yzm' => $authnum, 'status' => '1'];
return json($data);
}
public function dozhuce(){
$phone = $_POST['phone'];
$yzm = $_POST['yzm'];
$back_yzm = $_POST['back_yzm'];
//验证码校对
if($yzm==$back_yzm){
//可以做注册操作
return "注册成功";
}else{
return "验证码不正确";
}
}
}
发送手机验证码短信:
注意:以上代码用于测试,我这里就没有做严谨的逻辑规范,只是编写大概逻辑流程代码
如果其他配置没问题的话,基本上可以进行简单的手机短信验证功能了。 END!!
注:如有缺陷或不足请反馈,我及时纠正,谢谢!!
笔记 2020-09-09