ThinkPHP3.2.3框架下接入阿里云短信服务接口实现:注册登录

第一步:下载PHP版本的[SDK轻量版]代码,解压,重命名为api文件夹名称,并将该文件夹存放在Thinkphp根目录位置(存放位置可以自己选择);

 

第二步,在根目录/Application/Common/Controller/创建控制层AlismsController.class.php

复制代码
<?php
namespace Common\Controller;
use Think\Controller;
use Aliyun\DySDKLite\SignatureHelper;
require_once "./Api/SignatureHelper.php"; //第一步中阿里云接口存放SignatureHelper.php的路径
class AlismsController extends Controller {
    
    public function _initialize(){
        $this->accessKeyId = "AccessKeyId"; //AccessKeyId
        $this->accessKeySecret = "AccessKeySecret"; //AccessKeySecret
        $this->SignName = "短信签名"; //签名
        $this->CodeId = "短信验证码模板ID"; //验证码模板ID
    }
    
    //发送验证码
    public function code($phone,&$msg){
        
        if(!isphone($phone)){
            $msg = "手机号不正确";
            return false;
        }
        
        $params["PhoneNumbers"] = $phone; 
        $params["TemplateCode"] = $this->CodeId; //模板
        
        //记录存储验证码
        $code = rand(100000,999999);
        session("iphonecode",$phone.$code);//session存储手机号+验证码
        $params['TemplateParam'] = ["code" => $code]; //验证码
        
        return $this->send($params,$msg);        
    }
    
    //验证手机号是否正确
  private function isphone($phone){
       if (!is_numeric($phone)) {
            return false;
        }
        return preg_match("/^1[34578]{1}\d{9}$/", $phone) ? true : false;
    }

    //发送短信消息
    private function send($params=[],&$msg){
        
        $params["SignName"] = $this->SignName;
        
        if(!empty($params["TemplateParam"]) && is_array($params["TemplateParam"])) {
            $params["TemplateParam"] = json_encode($params["TemplateParam"], JSON_UNESCAPED_UNICODE);
        }
         $helper = new SignatureHelper();
        $content = $helper->request(
            $this->accessKeyId,
            $this->accessKeySecret,
            "dysmsapi.aliyuncs.com",
            array_merge($params, array(
                "RegionId" => "cn-hangzhou",
                "Action" => "SendSms",
                "Version" => "2017-05-25",
            ))
        );
        
        if($content===false){
            $msg = "发送异常";
            return false;
        }else{
            $data = (array)$content;
            if($data['Code']=="OK"){
                $msg = "发送成功";
                return true;
            }else{
                $msg = "发送失败 ".$data['Message'];
                return false;
            }
        }        
    }
}
复制代码

第三步,在根目录/Application/Admin/Controller/创建控制层LoginController.class.php

复制代码
<?php
namespace Admin\Controller;
use Think\Controller;
use Common\Controller\AlismsController;
class LoginController extends Controller{
    
     public function sendCode(){
        $code = new AlismsController(); //此类存放在Common\Controller\
        $code->code($_POST['iphone'],$msg);
       $this -> ajaxReturn($msg);
    }
}
?>
复制代码

 

另外:短信验证码60S倒计时及AJAX POST提交手机号JS如下:

复制代码
<!--短信验证码60S倒计时及AJAX POST提交手机号-->
<script type="text/javascript"> 
var countdown=60; 
function sendcode(){
    var obj = $("#smsbtn");
    settime(obj);
    $.ajax({
        type: 'POST',
        url: '__CONTROLLER__/sendCode.html',
        data: {"iphone":$("#name").val()},
        dataType:'json',
        success: function(data){
            alert('返回数据:'+data);
            console.log("提交成功");
        },
        error: function(data){
            console.log("提交失败");
        }
    });
}
function settime(obj) { //发送验证码倒计时
    if (countdown == 0) { 
        obj.attr('disabled',false);
        obj.val("发送验证码");
        countdown = 60; 
        return;
    } else { 
        obj.attr('disabled',true);
        obj.val("重新发送(" + countdown + "s)");
        countdown--; 
    } 
setTimeout(function() { 
    settime(obj) }
    ,1000) 
}
</script>
复制代码

其他HTML代码展示在这里就不在展示了;

 

转载于:https://www.cnblogs.com/jasonLiu2018/articles/10831080.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值