阿里雲短信服務(文檔):短信發送API(SendSms)---PHPjavascript
阿里雲短信服務(SDK及DEMO下載):SDK及DEMO下載php
阿里雲短信服務(接口調試常見錯誤碼):短信接口調用錯誤碼html
第一步:下載PHP版本的[SDK輕量版]代碼,解壓,重命名爲api文件夾名稱,並將該文件夾存放在Thinkphp根目錄位置(存放位置能夠本身選擇);
java
第二步,在根目錄/Application/Common/Controller/建立控制層AlismsController.class.phpjquery
<?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.phpajax
<?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以下:json
<!--短信驗證碼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代碼展現在這裏就不在展現了;api