tp5 发送阿里云短信

简介: 先在阿里大于短信平台注册,将appid和appsec准备好 1:下载 sdk包 (https://help.aliyun.com/document_detail/55359.html?spm=5176.

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

1:下载 sdk包 (https://help.aliyun.com/document_detail/55359.html?spm=5176.8195934.507901.12.2NiZni) 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'=>'验证码正确'];

    }
  }
}

相关文章
|
存储 自然语言处理 关系型数据库
MySQL高级篇——索引的创建与设计原则
索引的分类与使用、MySQL8.0索引新特性、适合创建索引的情况、不适合创建索引的情况
MySQL高级篇——索引的创建与设计原则
|
数据安全/隐私保护
fastadmin是如何设置没有权限的用户不能访问某些页面的?
fastadmin是如何设置没有权限的用户不能访问某些页面的?
1055 0
|
JSON 数据格式 内存技术
给layui的upload加了文件大小限制
/*! @Title: layui.upload 单文件上传 - 全浏览器兼容版 @Author: 贤心 @License:MIT */ layui.
6610 0
|
9月前
|
存储 人工智能 数据库
终于有人把数据中心讲明白了
数据中心是支撑数字世界运行的核心基础设施,承担数据存储、计算、传输等关键任务。它由IT资源层(包括计算、存储、网络)和物理设施层(电力、制冷、建筑)构成,通过稳定、高效的环境保障数据安全与业务连续性。本文详解数据中心的功能、组成及衡量标准,帮助数据化建设者全面理解其运作原理与价值。
4966 10
|
API 数据安全/隐私保护 开发者
商品订单接口获取及作用详解
在电商平台的后台管理中,订单接口至关重要。本文介绍了如何获取商品订单接口及其作用,包括注册开发者账号、创建应用、申请API权限和调用接口获取订单及物流信息的详细步骤,并提供了Python示例代码。同时,强调了遵守平台规则、数据安全和接口维护的重要性。
|
PHP 开发工具
tp5调用阿里云短信接口
tp5调用阿里云短信接口
570 0
|
前端开发 PHP 数据安全/隐私保护
知识付费系统源码 PHP
在数字经济背景下,知识付费成为新兴领域,尤其在线教育平台的兴起,使更多教育者通过知识付费系统销售课程,实现数字化转型与收入提升。开发此类平台需考虑众多技术细节和业务需求,如使用PHP语言实现支付功能,确保安全性、性能和可扩展性,选择合适的技术方案至关重要。
339 4
知识付费系统源码 PHP
|
消息中间件 安全 Java
阿里云 短信服务——发送短信验证码图文教程
阿里云 短信服务——发送短信验证码图文教程
7848 3
|
存储 安全 前端开发
OSS对象存储,网页版上传文件操作,傻瓜看图有手就行!
OSS对象存储,网页版上传文件操作,傻瓜看图有手就行!
889 1
OSS对象存储,网页版上传文件操作,傻瓜看图有手就行!
宝塔面板使用同一个IP不同端口创建不同的网站,解决:“您添加的站点已存在”的问题
宝塔默认是不支持同一个IP创建不同网站的,所以我们想要再以这个IP+8000端口再搭建一个新网站,这个时候如果你像下面这样填写是错误的。会报错“您添加的站点已存在”
2230 0
宝塔面板使用同一个IP不同端口创建不同的网站,解决:“您添加的站点已存在”的问题

热门文章

最新文章