PHP TP5框架 发送短信验证码

微笑、不失礼 提交于 2019-12-09 11:08:31

       在实现用户注册、修改密码等验证情况时,经常需要用到发送手机验证码的功能,这里主要基于TP5框架,就云之讯、阿里云短信两个平台做下开发整理。

       主要分三个部分介绍,1、云之迅后端;2、阿里云后端;3、前端调用。

一、云之讯短信

       官网:http://www.ucpaas.com                                                                                                                                                           开发手册:http://docs.ucpaas.com/doku.php                                                                                                                                     原生demo:http://www.php.cn/course/885.html

       TP5框架开发:                                                                                                                                                                                       1、下载云之讯SDK 包;                                                                                                                                                                   2、在TP5框架的think 中引入SDK 包;                                                                                                                                             3、在控制其中引入:                                                                                                                                                                                           

          4、在控制器中写入发送方法:                                                                                                                                                       

         5、前端点击事件调用方法(该博文后面有详细思路与代码)。

二、阿里云短信

       后台、控制器具体操作参考  https://blog.csdn.net/list_yang/article/details/81626593   

      1、下载阿里云SDK 包 ,将api_adk复制到TP5 extend目录下,根据自己的需求可重命名,这里命名为alisms

             

      2、在你项目应用公共(函数)文件common.php头部添加

      

      3、将封装好的函数写入common.php中

/*
 * @param $to    接收人
 * @param $model    短信模板ID
 * @param $code   短信验证码
 * @return json
 */
function send_sms($to, $model, $code)
{
    require_once '../extend/alisms/vendor/autoload.php';
    Config::load(); //加载区域结点配置
    $config = Db::name('sms_config')->select();
    $accessKeyId = '对应自己的后台数据';
    $accessKeySecret = '对应自己的后台数据 ';
    $templateParam = $code;
    //短信模板ID
    switch ($model) {
        case 1:
            $templateCode = $config[0]['sms_stencil_code']; // 注册登录短信验证码模板
            break;
        case 2:
            $templateCode = $config[1]['sms_stencil_code']; // 重置密码短信验证码模板
            break;
    }
    //短信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($to);
    // 必填,设置签名名称
    $request->setSignName('x网');
    // 必填,设置模板CODE
    $request->setTemplateCode($templateCode);
    // 可选,设置模板参数
    if ($templateParam) {
        $request->setTemplateParam(json_encode($templateParam));
    }
    //发起访问请求
    $acsResponse = $acsClient->getAcsResponse($request);
    //返回请求结果
    $result = json_decode(json_encode($acsResponse), true);
    // 具体返回值参考文档:https://help.aliyun.com/document_detail/55451.html?spm=a2c4g.11186623.6.563.YSe8FK
    return $result;
}

      4、在控制器中调用方法 ,参数依次是:手机号码、短信模版、验证码

       

 

   三、前端调用

                                                                                              

                                                 

                                                                                                   

        

     

      

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!