阿里大鱼短信验证码技术

注:   api接口文件在附件中
接口文件放置位置:
 
/**
 * 阿里大鱼短信发送
 */
public function sms($tel) {
    if (IS_AJAX) {
        $sms=M('ShortMsg');
        $res=$sms->getByTel($tel);//看看数据库有没有传过来的手机号
        $data['name']='阿里阿沙哟';
        $code['tel']=$tel;
        if($res){//如果有数据
            //判断是否是当天发送的,不是则直接把次数清零
            if(date('Y-m-d',NOW_TIME)!=date('Y-m-d',$res["send_time"])){
                $sms->where(['tel'=>$tel])->setField(['times'=>0]);
            }
            if($res['times']>5){//限制每天最多发送五次,防刷
                $this->ajaxReturn('error');
            }
            //解决用户网络信号差等接收不到短信而收到不同验证码的问题
            //五分钟内发送相同验证码
            if(NOW_TIME-$res["send_time"]<300){
                $data['code']=$res['code'];
                $code['send_time']=$res["send_time"];
                $code['code'] = $data['code'];
            }else{
                $data['code']=\Org\Util\String::randNumber(1000, 9999);
                $code['send_time']=NOW_TIME;
                $code['code'] = $data['code'];
            }
            $code['times']=$res['times']+1;//发送后,次数加一
            $sms->where(['tel'=>$tel])->save($code);
        }else{
            $data['code']=\Org\Util\String::randNumber(1000, 9999);//取出四位随机整数
            $code['code']=$data['code'];
            $code['send_time']=NOW_TIME;
            $sms->add($code);
        }
        vendor('Alidayu.TopSdk');//引入api文件
        date_default_timezone_set('Asia/Shanghai');//设置时区
        //这下面的代码可以去阿里大鱼官网测试好后copy下来
        $c            = new \TopClient;//实例化阿里大鱼类
        $c->appkey    ='appkey';//参数,来自于自己账户
        $c->secretKey = 'secretKey';//参数,来自于自己账户
        $req          = new \AlibabaAliqinFcSmsNumSendRequest;
        $req->setExtend("");
        $req->setSmsType("normal");
        $req->setSmsFreeSignName("短信接口测试");//这个参数也是自己申请设定的
        //将验证码存放到session中
        session('TEL_CODE', $code);
        $data= json_encode($data);
        $req->setSmsParam($data);
        $req->setRecNum($tel);
        $req->setSmsTemplateCode("SMS_25915334");
        $resp         = $c->execute($req);
        if (isset($resp->result->success)) {
            //发送成功了
            $this->ajaxReturn(true);
        }
    }
    //代表发送失败,可能是接口速度限制,缺钱,或者是非ajax调用
    $this->ajaxReturn(false);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于thinkphp5扩展的阿里大鱼短信接口。 使用方式: 1:将压缩包解压到项目根目录下simplewind文件夹下的extend文件夹中。 2:在use think\config文 件中加入配置 'wechat' =>array( /**********阿里大鱼配置************/ 'all_appkey' => '',//阿里大鱼Appkey 'all_secret' => '',//阿里大鱼Secret 'domain' => 'dysmsapi.aliyuncs.com',//阿里大鱼产品域名 'product' => 'Dysmsapi',////产品名称:云通信流量服务API产品,开发者无需替换 'region' => 'cn-hangzhou',//暂时不支持多Region 'end'=>'cn-hangzhou',// 服务结点 ), 3:在公共函数文件头部中加入 use aliyun\api_demo; 然后添加以下的阿里云调用方法: /**********************************发送短信--阿里大鱼********************/ /** * @param $autograph //签名 * @param $model //短信模板 * @param $phone //短信接收号码 * @param array $array //短信模板内容 * @param $water //流水号 * @return api_demo\stdClass|string */ function sk_aldayuCode($autograph,$model,$phone,$array=array(),$water){ if(!$autograph || !$model || !$phone || empty($array) || !$water){ return "参数不齐全:".$autograph."|".$model."|".$phone."|".$water; } $response = api_demo\SmsDemo::sendSms($autograph,$model,$phone,$array,$water); if(!$response->Message || $response->Message != 'OK'){ $msg['Message'] = $response->Message; return json_encode($msg,JSON_UNESCAPED_UNICODE); }else{ $msg['code'] = $array; $msg['Message'] = "OK"; return json_encode($msg,JSON_UNESCAPED_UNICODE); } } /**********************************发送短信--阿里大鱼********************/ 4:在须要调用短信发送的类中直接调用上方的函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值