使用阿里云验证短信发送接口,实现验证码短信发送功能;
请在命令行工具内执行下面的命令安装依赖 :
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 每天最多发送数量 )
/** * 功能 : 发送短信 * 参数 : * @param $phoneNumber 接收手机号 * @param $SignName 短信签名 阿里云管理中心【短信服务】获取,如: "阿里云短信测试专用" * @param $TemplateCode 短信模板 id 阿里云管理中心【短信服务】获取 * @param $TemplateParam 模板变量,数组形式根据模板信息设置 * @return true | false *
验证短信发送类内置了某个 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; } } }