ThinkPHP3.2.3框架下接入阿里云短信服务接口实现:注册登录
第一步:下载PHP版本的[SDK轻量版]代码,解压,重命名为api文件夹名称,并将该文件夹存放在Thinkphp根目录位置(存放位置可以自己选择);
第二步,在根目录/Application/Common/Controller/创建控制层AlismsController.class.php
<?php namespace Common\Controller; use Think\Controller; use Aliyun\DySDKLite\SignatureHelper; require_once "./Api/SignatureHelper.php"; //第一步中阿里云接口存放SignatureHelper.php的路径 class AlismsController extends Controller { public function _initialize(){ $this->accessKeyId = "AccessKeyId"; //AccessKeyId $this->accessKeySecret = "AccessKeySecret"; //AccessKeySecret $this->SignName = "短信签名"; //签名 $this->CodeId = "短信验证码模板ID"; //验证码模板ID } //发送验证码 public function code($phone,&$msg){ if(!isphone($phone)){ $msg = "手机号不正确"; return false; } $params["PhoneNumbers"] = $phone; $params["TemplateCode"] = $this->CodeId; //模板 //记录存储验证码 $code = rand(100000,999999); session("iphonecode",$phone.$code);//session存储手机号+验证码 $params['TemplateParam'] = ["code" => $code]; //验证码 return $this->send($params,$msg); } //验证手机号是否正确 private function isphone($phone){ if (!is_numeric($phone)) { return false; } return preg_match("/^1[34578]{1}\d{9}$/", $phone) ? true : false; } //发送短信消息 private function send($params=[],&$msg){ $params["SignName"] = $this->SignName; if(!empty($params["TemplateParam"]) && is_array($params["TemplateParam"])) { $params["TemplateParam"] = json_encode($params["TemplateParam"], JSON_UNESCAPED_UNICODE); } $helper = new SignatureHelper(); $content = $helper->request( $this->accessKeyId, $this->accessKeySecret, "dysmsapi.aliyuncs.com", array_merge($params, array( "RegionId" => "cn-hangzhou", "Action" => "SendSms", "Version" => "2017-05-25", )) ); if($content===false){ $msg = "发送异常"; return false; }else{ $data = (array)$content; if($data['Code']=="OK"){ $msg = "发送成功"; return true; }else{ $msg = "发送失败 ".$data['Message']; return false; } } } }
第三步,在根目录/Application/Admin/Controller/创建控制层LoginController.class.php
<?php namespace Admin\Controller; use Think\Controller; use Common\Controller\AlismsController; class LoginController extends Controller{ public function sendCode(){ $code = new AlismsController(); //此类存放在Common\Controller\ $code->code($_POST['iphone'],$msg); $this -> ajaxReturn($msg); } } ?>
另外:短信验证码60S倒计时及AJAX POST提交手机号JS如下:
<!--短信验证码60S倒计时及AJAX POST提交手机号--> <script type="text/javascript"> var countdown=60; function sendcode(){ var obj = $("#smsbtn"); settime(obj); $.ajax({ type: 'POST', url: '__CONTROLLER__/sendCode.html', data: {"iphone":$("#name").val()}, dataType:'json', success: function(data){ alert('返回数据:'+data); console.log("提交成功"); }, error: function(data){ console.log("提交失败"); } }); } function settime(obj) { //发送验证码倒计时 if (countdown == 0) { obj.attr('disabled',false); obj.val("发送验证码"); countdown = 60; return; } else { obj.attr('disabled',true); obj.val("重新发送(" + countdown + "s)"); countdown--; } setTimeout(function() { settime(obj) } ,1000) } </script>
其他HTML代码展示在这里就不在展示了;