近来在做一个商城的项目,个中注册、找回暗码、换绑手机等功用都须要用到考证码,考虑到上线的安全问题,我决议用手机考证码来进步安全性。经由各大短信平台举行比较后,挑选了阿里大于,一个阿里巴巴的云通讯平台,下面我将此次开辟履历和碰到的一些问题分享出来。
1.登录平台 阿里大于
2.上岸以后我们能够看到资费,运用场景等,在进入正题之前我们须要一些准备工作,起首我们先相识下短信的要求参数,在这里我们须要注重的是sms_param这个参数,在接下来我们请求短信模板的时刻会用到
3.响应参数,看待返回值我们记着最基本的true or false 即可
4.相识完大众参数,接下来我们进入正题,起首我们得设置短信署名和设置短信模板,短信署名出现在短信开首,注重短信模板,这里将用到上文提醒的sms_param参数
5.同时,在其网站上下载好SDK,下图展现的是我的寄存位置,运用的是thinkphp框架,其他的开辟环境文件的寄存位置在官网上有细致申明
6.接下来是项目背景的设置,个中appkey
,secret
在你完成上述请求以后能够在个人治理中心检察
class DuanXinController extends Controller {
public function index()
{
$appkey = "...";//你的App key
$secret = "...";//你的App Secret:
import('Org.taobao.top.TopClient');
import('Org.taobao.top.ResultSet');
import('Org.taobao.top.RequestCheckUtil');
import('Org.taobao.top.TopLogger');
import('Org.taobao.top.request.AlibabaAliqinFcSmsNumSendRequest');
//将须要的类引入,而且将文件名改成原文件名.class.php的情势
$c = new \TopClient;
$c->appkey = $appkey;
$c->secretKey = $secret;
$req = new \AlibabaAliqinFcSmsNumSendRequest;
$req->setExtend("123456");//肯定发给的是哪一个用户,参数为用户id
$req->setSmsType("normal");
session_start();
$verifycode = strval(rand(1000,9999));
$_SESSION['verifycode'] = $verifycode;
$userStatus=0;
/*
进入阿里大鱼的治理中心找到短信署名治理,输入已存在署名的称号,这里是身份考证。
*/
$req->setSmsFreeSignName("山川优品");
$smsParams = [
'code' => $verifycode,
'product' => '...'
];
$req->setSmsParam(json_encode($smsParams));
//$req->setSmsParam("{'code':numfour() 'product':'山川优品'}");
//这里设定的是发送的短信内容:考证码${code},您正在举行${product}身份考证,打死不要通知他人哦!”
$req->setRecNum(...);//参数为用户的手机号码
$req->setSmsTemplateCode("SMS_16670740");
$resp = $c->execute($req);
//var_dump($resp);这里是用来打印返回效果
if($resp->result->success)
{
$userStatus=1;
}
else
{
$userStatus=0;
}
echo $userStatus;
}
// 搜检考证码是不是准确
function checkcode(){
session_start();
$verifycode = $_SESSION['verifycode'];
$inputcode = I('post.code');
$checkstatus = 0;
if ($inputcode == $verifycode) {
$checkstatus = 1;
}else{
$checkstatus = 0;
}
echo $checkstatus;
}
7.下面的代码是项目前台的Ajax要求部份:
send.onclick = function() {
var oldTel = document.getElementById('oldTel').value;
var that = this;
var times = 60;
this.disabled = true;
timer1 = setInterval(function() {
times--;
that.value = times + "秒后重试";
if (times <= 0) {
that.disabled = false;
that.value = "发送考证码";
clearInterval(timer1);
times = 60;
}
}, 1000);
$.ajax({
url: "{:U('DuanXin/index')}",
type: "post",
data: {
'name':oldTel,
},
success: function(responseText, status, xhr) {
if (status == 'success') {
if (responseText == 1) {
return true;
} else {
return false;
}
} else {
return false;
}
},
error: function() {
return false;
},
timeout: 1000 * 60,
});
}
这里的按钮加入了一个简朴的倒计时功用,即点击发送后60s内没法点击按钮;
至此第一次运用短信考证API的阅历完毕!
–END–