在实现用户注册、修改密码等验证情况时,经常需要用到发送手机验证码的功能,这里主要基于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;//短信模板IDswitch ($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.YSe8FKreturn $result;
}
4、在控制器中调用方法 ,参数依次是:手机号码、短信模版、验证码
三、前端调用