thinkphp5开发的时候需要用到短信验证码,在官网下载下来demo后,不放入thinkphp框架中能正常运行,但是放入框架中出现了很多错误,直接贴上配置好的代码吧,特别注意的是,demo代码中有new stdClass();但是框架报错not found,经过调试,找到的解决办法是将new stdClass();改为new \stdClass();就可以了,只是在stdClass前面加了一个反斜杠‘\’我把容联的demo放到框架的extend目录下,修改后的代码如下:

1.SendCode.php

<?php
/**  Copyright (c) 2014 The CCP project authors. All Rights Reserved.**  Use of this source code is governed by a Beijing Speedtong Information Technology Co.,Ltd license*  that can be found in the LICENSE file in the root of the web site.**   http://www.yuntongxun.com**  An additional intellectual property rights grant can be found*  in the file PATENTS.  All contributing project authors may*  be found in the AUTHORS file in the root of the source tree.*/
namespace verify;
class SendCode
{//主帐号,对应开官网发者主账号下的 ACCOUNT SIDprivate $accountSid = '你自己容联的ACCOUNT SID';//主帐号令牌,对应官网开发者主账号下的 AUTH TOKENprivate $accountToken = '你自己容联的AUTH TOKEN';//应用Id,在官网应用列表中点击应用,对应应用详情中的APP ID//在开发调试的时候,可以使用官网自动为您分配的测试Demo的APP IDprivate $appId = '你自己容联的App ID';//请求地址//沙盒环境(用于应用开发调试):sandboxapp.cloopen.com//生产环境(用户应用上线使用):app.cloopen.comprivate $serverIP = 'sandboxapp.cloopen.com';//请求端口,生产环境和沙盒环境一致private $serverPort = '8883';//REST版本号,在官网文档REST介绍中获得。private $softVersion = '2013-12-26';/*** 发送模板短信* @param to 手机号码集合,用英文逗号分开* @param datas 内容数据 格式为数组 例如:array('Marry','Alon'),如不需替换请填 null* @param $tempId 模板Id,测试应用和未上线应用使用测试模板请填写1,正式应用上线后填写已申请审核通过的模板ID*/function sendTemplateSMS($to, $datas, $tempId){// 初始化REST SDK$rest = new REST($this->serverIP, $this->serverPort, $this->softVersion);$rest->setAccount($this->accountSid, $this->accountToken);$rest->setAppId($this->appId);// 发送模板短信echo "Sending TemplateSMS to $to <br/>";$result = $rest->sendTemplateSMS($to, $datas, $tempId);if ($result == NULL) {echo "result error!";}if ($result->statusCode != 0) {echo "error code :" . $result->statusCode . "<br>";echo "error msg :" . $result->statusMsg . "<br>";//TODO 添加错误处理逻辑} else {echo "Sendind TemplateSMS success!<br/>";// 获取返回信息$smsmessage = $result->TemplateSMS;echo "dateCreated:" . $smsmessage->dateCreated . "<br/>";echo "smsMessageSid:" . $smsmessage->smsMessageSid . "<br/>";//TODO 添加成功处理逻辑}}}

2.REST.php

<?php
/**  Copyright (c) 2014 The CCP project authors. All Rights Reserved.**  Use of this source code is governed by a Beijing Speedtong Information Technology Co.,Ltd license*  that can be found in the LICENSE file in the root of the web site.**   http://www.yuntongxun.com**  An additional intellectual property rights grant can be found*  in the file PATENTS.  All contributing project authors may*  be found in the AUTHORS file in the root of the source tree.*/
namespace verify;
class REST {private $AccountSid;private $AccountToken;private $AppId;private $ServerIP;private $ServerPort;private $SoftVersion;private $Batch;  //时间戳private $BodyType = "xml";//包体格式,可填值:json 、xmlprivate $enabeLog = true; //日志开关。可填值:true、private $Filename="./log.txt"; //日志文件private $Handle;function __construct($ServerIP,$ServerPort,$SoftVersion) {$this->Batch = date("YmdHis");$this->ServerIP = $ServerIP;$this->ServerPort = $ServerPort;$this->SoftVersion = $SoftVersion;$this->Handle = fopen($this->Filename, 'a');}/*** 设置主帐号* * @param AccountSid 主帐号* @param AccountToken 主帐号Token*/    function setAccount($AccountSid,$AccountToken){$this->AccountSid = $AccountSid;$this->AccountToken = $AccountToken;   }/*** 设置应用ID* * @param AppId 应用ID*/function setAppId($AppId){$this->AppId = $AppId; }/*** 打印日志* * @param log 日志内容*/function showlog($log){if($this->enabeLog){fwrite($this->Handle,$log."\n");  }}/*** 发起HTTPS请求*/function curl_post($url,$data,$header,$post=1){//初始化curl$ch = curl_init();//参数设置  $res= curl_setopt ($ch, CURLOPT_URL,$url);  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt ($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_POST, $post);if($post)curl_setopt($ch, CURLOPT_POSTFIELDS, $data);curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch,CURLOPT_HTTPHEADER,$header);$result = curl_exec ($ch);//连接失败if($result == FALSE){if($this->BodyType=='json'){$result = "{\"statusCode\":\"172001\",\"statusMsg\":\"网络错误\"}";} else {$result = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Response><statusCode>172001</statusCode><statusMsg>网络错误</statusMsg></Response>"; }    }curl_close($ch);return $result;} /*** 发送模板短信* @param to 短信接收彿手机号码集合,用英文逗号分开* @param datas 内容数据* @param $tempId 模板Id*/       function sendTemplateSMS($to,$datas,$tempId){//主帐号鉴权信息验证,对必选参数进行判空。$auth=$this->accAuth();if($auth!=""){return $auth;}// 拼接请求包体if($this->BodyType=="json"){$data="";for($i=0;$i<count($datas);$i++){$data = $data. "'".$datas[$i]."',"; }$body= "{'to':'$to','templateId':'$tempId','appId':'$this->AppId','datas':[".$data."]}";}else{$data="";for($i=0;$i<count($datas);$i++){$data = $data. "<data>".$datas[$i]."</data>"; }$body="<TemplateSMS><to>$to</to> <appId>$this->AppId</appId><templateId>$tempId</templateId><datas>".$data."</datas></TemplateSMS>";}$this->showlog("request body = ".$body);// 大写的sig参数 $sig =  strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));// 生成请求URL        $url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/SMS/TemplateSMS?sig=$sig";$this->showlog("request url = ".$url);// 生成授权:主帐户Id + 英文冒号 + 时间戳。$authen = base64_encode($this->AccountSid . ":" . $this->Batch);// 生成包头  $header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");// 发送请求$result = $this->curl_post($url,$body,$header);$this->showlog("response body = ".$result);if($this->BodyType=="json"){//JSON格式$datas=json_decode($result); }else{ //xml格式$datas = simplexml_load_string(trim($result," \t\n\r"));}//  if($datas == FALSE){
//            $datas = new stdClass();
//            $datas->statusCode = '172003';
//            $datas->statusMsg = '返回包体错误';
//        }//重新装填数据if($datas->statusCode==0){if($this->BodyType=="json"){$datas->TemplateSMS =$datas->templateSMS;unset($datas->templateSMS);   }}return $datas; } /*** 主帐号鉴权*/   function accAuth(){if($this->ServerIP==""){$data = new \stdClass();$data->statusCode = '172004';$data->statusMsg = 'IP为空';return $data;}if($this->ServerPort<=0){$data = new \stdClass();$data->statusCode = '172005';$data->statusMsg = '端口错误(小于等于0)';return $data;}if($this->SoftVersion==""){$data = new \stdClass();$data->statusCode = '172013';$data->statusMsg = '版本号为空';return $data;} if($this->AccountSid==""){$data = new \stdClass();$data->statusCode = '172006';$data->statusMsg = '主帐号为空';return $data;}if($this->AccountToken==""){$data = new \stdClass();$data->statusCode = '172007';$data->statusMsg = '主帐号令牌为空';return $data;}if($this->AppId==""){$data = new \stdClass();$data->statusCode = '172012';$data->statusMsg = '应用ID为空';return $data;}   }
}

3.thinkphp5框架默认的index控制器代码(Index.php)

<?php
namespace app\index\controller;
use verify\SendCode;
class Index
{public function index(){$Rest = new SendCode();$Rest->sendTemplateSMS("电话号码",array('验证码','有效时间'),"1");}
}

将上诉代码复制到自己的框架中,修改SendCode.php中的$accountSid、$authToken、$appId,Index.php中填入接收验证码的手机号、要发送的验证码、验证码有效时间即可,访问控制器index的index方法即可运行成功。下面是代码结构图

thinkphp5使用容联发送短信验证码相关推荐

  1. tp6+容联发送短信

    引入容联的sdk包放入public文件中 https://github.com/cloopen/php-sms-sdk 上代码 include_once('./php-sms-sdk-master/S ...

  2. 容联云发送短信验证码

    setting配置 # 配置jwt的全局认证 REST_FRAMEWORK = {'DEFAULT_AUTHENTICATION_CLASSES':['rest_framework_jwt.authe ...

  3. flask容联云发送短信验证码和异步发送

    容联云地址:https://www.yuntongxun.com/ 获取短信验证码流程图 容联云配置 在容联云官网注册一个账号,发送短信验证码必须使用三个ID ACCOUNT SID   (主账户ID ...

  4. 使用容联云Celery异步发送短信验证码

    文章目录 Celery/容联云 安装与命令 安装 celery启动命令 一.Celery 1.配置Celery 2.创建任务文件 二.容联云 1. 配置容联云 settings.py 2. 使用Sms ...

  5. Django使用容联云发送短信验证码时提示:172001,网络错误

    尝试用django连接容联云发送短信验证码,运行时出现了以下提示:{'172001':'网络错误'}:在网上查阅资料后得知,是因为python升级到2.7.9之后引入了一个新特性,当打开一个https ...

  6. Go语言初识应用--容联云发送短信验证码、手机号注册

    使用gin框架.gorm映射 所使用的连接容联云参考容联云官方文档,放置到utils中, gin项目结构根据自身需要,大题如下设置: utils--sms.go package main import ...

  7. php实现短信找回密码,thinkphp5怎么调用云片接口实现发送短信验证码找回密码功能...

    thinkphp5怎么调用云片接口实现发送短信验证码找回密码功能 发布时间:2020-12-11 12:33:42 来源:亿速云 阅读:60 作者:小新 小编给大家分享一下thinkphp5怎么调用云 ...

  8. html5实现短信验证修改密码,thinkphp5如何调用云片接口实现发送短信验证码找回密码功能...

    下面由thinkphp框架教程栏目给大家介绍thinkphp5如何调用云片接口实现发送短信验证码找回密码功能,希望对需要的朋友有所帮助! 思路: 1.用户输入手机号,请求获取短信验证码. 2.thin ...

  9. 荣联云发送短信验证码--python3接口

    前言 近期做网页注册需要用到发送验证码功能,于是用荣联云的发送短信验证码进行测试,官网上提供的demo是python2.7的,而目前都使用的python3了,而且demo中的代码太长了,我只取demo ...

最新文章

  1. ATS 5.2.1中Background-Fetch插件调研笔记
  2. 3.11课·········异常语句与for循环重复
  3. Linux 操作系统原理 — 内存 — 基于 MMU 硬件单元的虚/实地址映射技术
  4. 驱动相关的内核函数分析
  5. 使数据区“可执行”的几种常规办法
  6. tc溜溜865手机投屏卡_下半年发布新品手机盘点:骁龙865+是性能之王 红米抢入门市场...
  7. java consumer.poll_kafka消费者API consumer.poll()没有错误,没有异常,只是阻止
  8. Android中如何使控件保持固定宽高比
  9. MySQL数据库自动添加时间戳
  10. jdbc 生成建表语句_JDBC数据库连接怎么操作?
  11. Android---AlarmManager(全局定时器/闹钟)指定时长或以周期形式执行某项操作
  12. Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式)介绍
  13. 模型师对初学者的经验之谈
  14. 持续集成部署Jenkins工作笔记0002---认识Jenkins和Hudson
  15. golang微服务框架对比_最强开源微服务框架,全网独家整理
  16. IIS——MIME介绍与添加MIME类型
  17. matlab中回归系数,最小一乘回归系数估计及其MATLAB实现
  18. 启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法...
  19. 关于gcc的一点小人性化提示
  20. 霍金警告人工智能危险性 称其若失控很难被阻止

热门文章

  1. 基于hadoop平台hive数据库处理电影数据
  2. 计算机组织桌面不见了,教您如果计算机桌面图标不见了怎么办
  3. air换电池 macbook_大加分!苹果 2018 新款 MacBook Air 电池可独立更换
  4. 高级API 快速入门之第七章 本地模拟下载文件
  5. 跟小博老师一起学JSP ——通信作用域
  6. 【LSSVM回归预测】基于matlab灰狼算法优化最小支持向量机GWO-LSSVM数据预测【含Matlab源码 2259期】
  7. 【黄啊码】百万级别订单量,如何生成唯一订单ID(雪花算法)
  8. Web安全常见基本知识
  9. 从 0 开始搭建 Hexo 博客
  10. BDL 百度研究院大数据实验室的吴海山,做一名数据科学家有怎样的体验,问我吧!