tp5 + ajax 引入阿里云短信发送验证码

2019-03-26    标签:TP5    阅读:1002   


工作中经常会遇到做发送短信验证码的,以下是tp5引入阿里云短信发送验证码一个案例,仅供参考

阿里云官方下载地址:https://help.aliyun.com/document_detail/55359.html?spm=a2c4g.11186623.6.667.63183bb2YMptJ2
百度云下载地址:https://pan.baidu.com/s/1C3HUvij6hH08zEwRSlqnPw      提取码:aar2 

效果视图:

image.png

附件:

模板代码:

<div class="row">
	<div class="col-lg-12 col-sm-12 col-xs-12">
	    <div class="widget">
	        <div class="widget-header bordered-bottom bordered-themeprimary">
	            <span class="widget-caption">短信添加</span>
	        </div>
            <div class="widget-body">
                    <form class="form-horizontal form-bordered" role="form" method="post" action="" enctype="multipart/form-data" >
                        <div class="form-group">
                            <label for="inputusername" class="col-sm-1 control-label no-padding-right">手机号码</label>
                            <div class="col-sm-6">
                                <input type="text" class="form-control mobile"  name="mobile" placeholder="手机号码">
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="inputusername" class="col-sm-1 control-label no-padding-right">验证码</label>
                            <div class="col-sm-6">
                                <div class="col-sm-8">
                                    <input type="text" class="form-control code"  name="code" placeholder="验证码">
                                </div>
                                <div class="col-sm-4">
                                    <!-- <button type="button" class="dchu btn btn-danger btn-xs gencode">获取验证码</button> -->
                                    <a href="javascript:void(0);" class="btn btn-danger btn-xs" id="gSMS" onclick="get_sms_captcha('2')">获取短信验证码</a> 
                                </div>
                            </div>
                        </div>
                        <div class="form-group">
                            <div class="col-sm-offset-1 col-sm-10">
                                <button type="button" class="btn btn-primary" onclick="subfm()">发送</button>
                            </div>
                        </div>
                    </form>
            </div>
	    </div>
	</div>
</div>

JavaScript+ajax代码:

    function subfm(){
        var code=$('.code').val();
        var mobile=$(".mobile").val();
        // if(code !=""){
            $.ajax({
                    url:"{:url('index/Alisdsms/smdss_sub')}",
                    type:'post',
                    data:{"code":code,"mobile":mobile,},
                    datatype:'json',
                    success:function(msg){
                      // console.log(msg)
                      alert(msg.message);
                      // location.reload(true);
                    }
                  });
        // }
    }
    var countDownT = 60;
        function get_sms_captcha(type){
            if(!$(".mobile").val().match(/^(13\d|14\d|15\d|17\d|18[0-9]|19\d)\d{8}$/)){
                alert("请输入正确的手机号码");
                return false;
            }else{
                $(".dchu").removeClass("btn-danger");
                 $.ajax({
                    url:"{:url('index/Alisdsms/smisds')}",
                    type:'post',
                    data:{"mobile":$(".mobile").val()},
                    datatype:'json',
                    success:function(msg){
                      console.log(msg)
                      // alert(msg.message);
                      // location.reload(true);
                    }
                  });

            }
            countDownT = 60;
            setTime();
            //下方写业务

        }

        function  setTime(){
            if (countDownT == 0){
                $("#gSMS").attr("onclick","get_sms_captcha('2')");
                $("#gSMS").text("获取短信验证码");
            } else{
                $("#gSMS").attr("onclick","#");
                $("#gSMS").text("重新发送("+countDownT+")");
                countDownT--;
                setTimeout(function () {
                    setTime();
                },1000)
            }
        }

PHP代码:

<?php
namespace app\index\controller;
use think\Controller;
use think\DB;
// 基本设置
class Alisdsms extends Base
{
   public function sms_add(){
   		return $this->fetch();
   }
   public function smisds(){
   		$posman=input();
   		$phone=input('mobile');
   		if($posman!=''){
   			$mobile=$phone;
   			// halt($mobile);
	   		$code=mt_rand(10000,99999);
	   		$result=sendMsg($mobile,$code);
	   		// halt($result);
	   		if($result['Code'] == 'OK'){
	   			cache('tel'.$mobile,$code,39);
	   			$data=[
	   				'tel'=>$mobile,
	   				'code'=>$code,
	   				'addtime'=>time(),
	   			];
	   			// halt($data);
	   			$res=\think\Db::name('bsms')->insert($data);
	   			return json(['success'=>'ok','message'=>'发送成功']);
	   		}
   		}
   }
   public function smdss_sub(){
   	$tel=input('mobile');
   	$code=input('code');
   	if($code==""){
   		return json(['error'=>'0','message'=>'请输入短信验证码']);
   	}
   	$res=db('bsms')->where(array('tel'=>$tel))->find();
   	if($res['code']=$code){
   		return json(['success'=>'1','message'=>'加入成功']);
   	}
   }
}

common.php公共配置文件添加如下代码:

<?php

// 阿里短信

use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
 
//阿里短信函数,$mobile为手机号码,$code为自定义随机数
function sendMsg($mobile,$code){
 
    //这里的路径EXTEND_PATH就是指tp5根目录下的extend目录,系统自带常量。alisms为我们复制api_sdk过来后更改的目录名称
    require_once EXTEND_PATH.'alisms/vendor/autoload.php';
    Config::load();             //加载区域结点配置
 
    $accessKeyId = 'LTAJEexAPgUEV';  //阿里云短信获取的accessKeyId
 
    $accessKeySecret = 'CAP9VUEtoxoT6Cw0svbRnNX2BrcDn';    //阿里云短信获取的accessKeySecret
 
    //这个个是审核过的模板内容中的变量赋值,记住数组中字符串code要和模板内容中的保持一致
    //比如我们模板中的内容为:你的验证码为:${code},该验证码5分钟内有效,请勿泄漏!
    $templateParam = array("code"=>$code);           //模板变量替换
 
    $signName = '简忆blogs'; //这个是短信签名,要审核通过
 
    $templateCode = 'SMS_925270876';   //短信模板ID,记得要审核通过的
 
 
    //短信API产品名(短信产品名固定,无需修改)
    $product = "Dysmsapi";
    //短信API产品域名(接口地址固定,无需修改)
    $domain = "dysmsapi.aliyuncs.com";
    //暂时不支持多Region(目前仅支持cn-hangzhou请勿修改)
    $region = "cn-hangzhou";
 
    // 初始化用户Profile实例
    $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
    // 增加服务结点
    DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $product, $domain);
    // 初始化AcsClient用于发起请求
    $acsClient= new DefaultAcsClient($profile);
 
    // 初始化SendSmsRequest实例用于设置发送短信的参数
    $request = new SendSmsRequest();
    // 必填,设置雉短信接收号码
    $request->setPhoneNumbers($mobile);
 
    // 必填,设置签名名称
    $request->setSignName($signName);
 
    // 必填,设置模板CODE
    $request->setTemplateCode($templateCode);
 
    // 可选,设置模板参数
    if($templateParam) {
        $request->setTemplateParam(json_encode($templateParam));
    }
 
    //发起访问请求
    $acsResponse = $acsClient->getAcsResponse($request);
 
    //返回请求结果
    $result = json_decode(json_encode($acsResponse),true);
    return $result;

}
// 阿里短信

阿里云通信分会场:https://promotion.aliyun.com/ntms/act/product-section-2019/communication.html?utm_content=se_1001433792

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年99元 618年中云钜惠大促,精选云产品1折起,助力新基建,618年中大促云服务器88元

‘简忆博客’微信公众号 扫码关注‘简忆博客’微信公众号,获取最新文章动态
转载:请说明文章出处“来源简忆博客”。http://www.tpxhm.com/adetail/121.html

×
觉得文章有用就打赏一下文章作者
微信扫一扫打赏 微信扫一扫打赏
支付宝扫一扫打赏 支付宝扫一扫打赏

文章评论(0)

登录

博主信息

头像

简忆博客
仕而优则学,学而优则仕。

置顶推荐

打赏本站

如果你觉得本站很棒,可以通过扫码支付打赏哦!
微信扫码:你说多少就多少~
微信扫码
支付宝扫码:你说多少就多少~
支付宝扫码
×