账户中心 退出系统
开发文档 资讯·分享 技术交流 会员登录
phpGrace GSCMS 公众号系统
阿里云验证短信发送类

功能描述

使用阿里云验证短信发送接口,实现验证码短信发送功能;

composer 依赖安装

请在命令行工具内执行下面的命令安装依赖 :

composer require alibabacloud/client

注意事项

alibabacloud/client 相关依赖要求 php 版本 >= 7.2.5,否则会报错 : Your Composer dependencies require a PHP version ">= 7.2.5". You are running 7.1
解决办法 :

1 升级 php 版本
2 修改 /vendor/composer/platform_check.php 内的php 版本检查代码 :  if (!(PHP_VERSION_ID >= 70000)) {

类名称

grace\tool\aliCloud\verifySMS;

相关配置

// 全局配置文件位置 appConfig/ali.php
// 修改以下配置
// 阿里云验证码短信配置
'aliVerifySMS'            => array(
    'accessKeyId'        => '******',      // 阿里云账户中心获取
    'accessKeySecret'    => '******', // 阿里云账户中心获取
    'maxSendNumber'      => 20, // 某个 ip 每天最多发送数量
)

sendMsg 消息发送函数

/**
 * 功能 : 发送短信
 * 参数 : 
 * @param $phoneNumber    接收手机号
 * @param $SignName       短信签名 阿里云管理中心【短信服务】获取,如: "阿里云短信测试专用"
 * @param $TemplateCode   短信模板 id 阿里云管理中心【短信服务】获取
 * @param $TemplateParam  模板变量,数组形式根据模板信息设置
 * @return true | false
 *

ip 发送短信次数控制

验证短信发送类内置了某个 ip 每天发送短信数量的限制功能,默认每个 IP 每天发送 20 次;可以通过配置文件修改限制数量;
此功能依赖 grace_send_phone_msg_rec 数据表,请创建此数据表 ( 表前缀请根据项目实际情况具体设置 ): 

CREATE TABLE `grace_send_phone_msg_rec` (
  `dateandip` varchar(30) NOT NULL,
  `num` tinyint(4) DEFAULT '0',
  PRIMARY KEY (`dateandip`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

创建好数据表后,类库会自动完成数据记录工作。

演示代码

<?php
namespace grace\controller;
use grace\grace;
use grace\tool\aliCloud\verifySMS;

class index extends grace{
    public function index(){
        $phoneNumber   = '18109235728';     // 发送手机号
        $SignName      = '阿里云短信测试专用'; // 短信模板签名
        $TemplateCode  = 'SMS_82870108';    // 短信模板编号
        $yzm           = mt_rand(111111, 999999); // 模拟一个数字验证码
        $verifySMS     = new verifySMS();
        $TemplateParam = array('code' => $yzm);
        $res = $verifySMS->sendMsg($phoneNumber, $SignName, $TemplateCode, $TemplateParam);
        if($res){
            echo '发送成功';
        }else{
            echo $verifySMS->error;
        }

    }
}