点击 【获取验证码】 执行ajax
PHP:ajax执行的PHP -> balidate.php
$phone = $_GPC['uphone'];//发送的电话号码
if(!preg_match("/^1[3|4|5|6|7|8|9][0-9]\d{4,8}$/",$phone)){
$error = array('t' => false,'msg' => "请正确填写手机号码");
echo json_encode($error);exit;
}else{
include "SmsDemo.php";**引入发送短信的文件**可修改路径
$alidayv_accesskeyid = 你的阿里大于alidayv_accesskeyid;// $alidayv_accesskeyid
$alidayv_accesskeysecret = 你的阿里大于alidayv_accesskeysecret;// $alidayv_accesskeysecret
$sms_mb = 你的阿里大于alidayv_muban;//发送短信的模板 $alidayv_muban
$sms_qm = 你的阿里大于alidayv_qianming;//发送短信的签名 $alidayv_qianming
$chars='0123456789';//此处为随机获取的验证码
for($i=0;$i<6;$i++){
$rand.=substr($chars,(mt_rand()%strlen($chars)),1);//验证码
}
//主代码
$response = SmsDemo::sendSms($phone,$sms_mb,$sms_qm,$alidayv_accesskeyid,$alidayv_accesskeysecret,$rand);
if($response->{'Message'} == 'OK'){//返回的信息 如果ok 那就ok了
//进行其他的操作 --可选 --E
$sql = '查询之前有没有此账号标识';
$prarm = array(':uniacid' => $_W['uniacid'] ,':rid' => $rid);
$old_phone = pdo_fetch($sql, $prarm);
$now = time();//发送时间
$overdue = $now+(60*5);//逾期时间 五分钟
if(!empty($old_phone)){
$update = array(
***
);
pdo_update(***);
}else{
$insert = array(
***
);
$result = pdo_insert(***);
}
//进行其他的操作 --可选 --S
$return['t'] = true;
$return['msg'] = '验证码发送成功';//返回的信息
}else{
$return['t'] = false;
// $return['msg'] = $response['acsResponse']->{'Message'};//返回的信息
$return['msg'] = '操作过于频繁或信息错误';//返回的信息
}
echo json_encode($return);exit;//返回ajax信息
// echo "发送短信(sendSms)接口返回的结果:\n";
// print_r($response);
}
发送短信执行PHP -> SmsDemo.php
可下载原Demo https://help.aliyun.com/document_detail/55359.html?spm=a2c4g.11186623.2.8.uoeeVe
暂时只修改了 SmsDeme.php中的部分代码 就直接只粘贴修改的了
/**
* 取得AcsClient
*
* @return DefaultAcsClient
*/
public static function getAcsClient($alidayv_accesskeyid,$alidayv_accesskeysecret) {
//产品名称:云通信短信服务API产品,开发者无需替换
$product = "Dysmsapi";
//产品域名,开发者无需替换
$domain = "dysmsapi.aliyuncs.com";
// TODO 此处需要替换成开发者自己的AK (https://ak-console.aliyun.com/)
$accessKeyId = $alidayv_accesskeyid; // AccessKeyId
$accessKeySecret = $alidayv_accesskeysecret; // AccessKeySecret
// 暂时不支持多Region
$region = "cn-hangzhou";
// 服务结点
$endPointName = "cn-hangzhou";
if(static::$acsClient == null) {
//初始化acsClient,暂不支持region化
$profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
// 增加服务结点
DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);
// 初始化AcsClient用于发起请求
static::$acsClient = new DefaultAcsClient($profile);
}
return static::$acsClient;
}
/**
* 发送短信
* @return stdClass
*/
public static function sendSms($phone,$sms_mb,$sms_qm,$alidayv_accesskeyid,$alidayv_accesskeysecret,$rand) {
// 初始化SendSmsRequest实例用于设置发送短信的参数
$request = new SendSmsRequest();
//可选-启用https协议
//$request->setProtocol("https");
// 必填,设置短信接收号码
$request->setPhoneNumbers($phone);
// 必填,设置签名名称,应严格按"签名名称"填写,请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign
$request->setSignName($sms_qm);
// 必填,设置模板CODE,应严格按"模板CODE"填写, 请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/template
$request->setTemplateCode($sms_mb);
// 可选,设置模板参数, 假如模板中存在变量需要替换则为必填项
$request->setTemplateParam(json_encode(array( // 短信模板中字段的值
"code"=>$rand,
"product"=>"dsd"
), JSON_UNESCAPED_UNICODE));
// 可选,设置流水号
$request->setOutId("yourOutId");
// 选填,上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)
$request->setSmsUpExtendCode("1234567");
// 发起访问请求
$acsResponse = static::getAcsClient($alidayv_accesskeyid,$alidayv_accesskeysecret)->getAcsResponse($request);
return $acsResponse;
}
并且把阿里云官网下的原Demo 中的 api_ask 文件夹 放到和SmsDemo.php同级目录中 亦可修改路径
这样就ok了 纯手工写的