博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tp5 发送阿里云短信
阅读量:7241 次
发布时间:2019-06-29

本文共 2263 字,大约阅读时间需要 7 分钟。

先在阿里大于短信平台注册,将appid和appsec准备好.

1:下载 sdk包 ( ps:我下载的是轻量级的包

102201
放到 vendor目录下面去

2:新增一个AliSms控制器(我写的是 扩展类 直接放在extend)下面的

3:在控制器引入 包 由于tp5.1*以上 开启了自动加载,这儿你可以使用 require 或者定义命名空间的方式来引入

<?php
/**

  • 阿里云短信发送 模型
    */

namespace lib;

use AliyunDySDKLiteSignatureHelper;
use appcommonmodelWebsiteConfig;
use appcommonmodelSms;
use thinkDb;
class AliSms
{
  public static function sendSms($mobile,$code,$TemplateCode)
  {

    //引入 sdk 文件

    require '../vendor/aliyun-sms/SignatureHelper.php';
    //读取数据库 配置信息
    $config = WebsiteConfig::get(1);

    $accessKeyId = $config['sms_appid'];

    $accessKeySecret = $config['sms_appsecret'];

    //发送短信需要的数据

    $params = [
      'PhoneNumbers' => $mobile,//手机号
      'SignName' => 'xxx',//签名
      'TemplateCode' => $TemplateCode,//模板id
      'TemplateParam' => [//短信模板需要的 变量内容
        'code' => $code
      ]
    ];
try {
      Sms::where('mobile',$mobile)->delete();//将数据库存的 短信信息删除
      Sms::create([//插入本条短信内容
        'code' => $code,
        'mobile' => $mobile,
        'end_time' => time()+900
      ]);
    } catch (Exception $e) {
     return false;
    }
    if(!empty($params["TemplateParam"]) && is_array($params["TemplateParam"])) {
      $params["TemplateParam"] = json_encode($params["TemplateParam"], JSON_UNESCAPED_UNICODE);
    }

    //实例化 速度快、

    $helper = new SignatureHelper();
    try {
      $content = $helper->request(//发送短 这儿的内容不需要更改
        $accessKeyId,
        $accessKeySecret,
        "dysmsapi.aliyuncs.com",
        array_merge($params,[
          "RegionId" => "cn-hangzhou",
          "Action" => "SendSms",
          "Version" => '2017-05-25',
        ])
      );
      return object_array($content);//将对象转为数组 返回
    } catch (Exception $e) {
      return false;
    }
}
/**

  • 验证验证码
  • @return code 0 为验证码不正确 2为验证码已过期 1为验证码正确
    */

  public static function check($mobile,$code)

  {
    $result = Sms::where(['mobile' => $mobile , 'code' => $code] )->find();

    if (empty($result)) {

    return ['code'=>0,'msg'=>'验证码不正确,请检查'];

    }elseif( ($result['end_time']      Sms::where(['mobile' => $mobile , 'code' => $code] )->delete();

      return ['code'=>0,'msg'=>'验证码已过期,请重新获取'];

    }else{

      Sms::where(['mobile' => $mobile , 'code' => $code] )->delete();

      return ['code'=>1,'msg'=>'验证码正确'];

    }

  }
}

转载地址:http://bvfbm.baihongyu.com/

你可能感兴趣的文章
(树形dp)鸡毛信问题 (fzu 1227)
查看>>
论文阅读笔记五十八:FoveaBox: Beyond Anchor-based Object Detector(CVPR2019)
查看>>
关于Cookie跨域的问题研究
查看>>
今天看见了一个有意思的题目-----请实现鼠标点击页面中的任意标签,alert该标签的名字...
查看>>
Windows 7 Professional安装多语言包
查看>>
SOC-training image镜像内核文件(DE1-soc软件实验”hello_word")
查看>>
使用 Apache Commons CLI 开发命令行工具示例
查看>>
第十三章 接口
查看>>
进度条9
查看>>
robotframework自动化测试之测试数据
查看>>
[NOI2008]志愿者招募
查看>>
同一个闭区间上有界变差函数的和与积都是有界变差函数
查看>>
Elementary Methods in Number Theory Exercise 1.5.10
查看>>
「陶哲軒實分析」 習題 3.5.1
查看>>
大聊Python----协程
查看>>
nginx.pid-nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or direc
查看>>
在CentOS上配置SAMBA共享目录(转载)
查看>>
Linux之samba搭建
查看>>
第十三周学习笔记
查看>>
ZOJ 2770 Burn the Linked Camp 差分约束 (转)
查看>>