您的位置 首页 php

关于thinkphp下阿里大于短信验证

下面由thinkphp框架教程栏目给大家介绍thinkphp下阿里大于短信验证,希望对需要的朋友有所帮助!

本方法基于Thinkphp,用到了jquery.validate,当然具体项目中也可以不用,下面我就按步骤来写下来。

1.准备

1.登陆
http://www.alidayu.com,进入网址
用淘宝号登陆即可
2.进入管理中心

a55e3de0f44114382ed5eed297f6b20.png

3.配置
(1)配置短信签名

348c818d07719f5552c0550d1827f6f.png

02581cb4c1b54ec3ce9851fd319ca47.png

(2)配置短信模板

98e22ddbd41997329e0a6602040aba2.png

1ae79040a243415fa741b84d5196266.png

建好后,需要的东西就是APPkey APPsecret

cfe3576e98976efe62e67543ede07a8.png

9645bd776a18d5fcab8f0d1edee6f2f.png

还可以进行测试

dcf245c7d69b9f904b50d2905191c90.png

2.数据库

839b3a67184d84db3d59226f4ec02dc.png

3.后端

  • 引入
    下载阿里大于类文件,放在/Thinkphp/Library/org/Alidayu(文件夹要大写,坑过自己,部署到服务器后出问题)

8c2c09bf644de4222723e3dafe526f5.png

  • 通用类里

  // 生成短信验证码    public function createSMSCode($length = 4){        $min = pow(10 , ($length - 1));        $max = pow(10, $length) - 1;        return rand($min, $max);    }    //发送验证码    public function send_phone($phone){        $code=$this->createSMSCode($length = 4);        import('Org.Alidayu.top.TopClient');        import('Org.Alidayu.top.ResultSet');        import('Org.Alidayu.top.RequestCheckUtil');        import('Org.Alidayu.top.TopLogger');        import('Org.Alidayu.top.request.AlibabaAliqinFcSmsNumSendRequest');        $c = new \TopClient;        $appkey="你的appkey";        $secret="你的secret;        $c ->appkey = $appkey ;        $c ->secretKey = $secret ;        $req = new \AlibabaAliqinFcSmsNumSendRequest;        $req ->setExtend( "" );        $req ->setSmsType( "normal" );        $req ->setSmsFreeSignName( "阿尚测试" );        $req ->setSmsParam( "{name:'客户',code:'".$code."',time:'5分钟'}" );        $req ->setRecNum( $phone);        $req ->setSmsTemplateCode( "SMS_71300157" );        $resp = $c ->execute( $req );        $this->sendMsgResult($resp,$phone,$code);    }        //验证手机号是否发送成功  前端用ajax,发送成功则提示倒计时,如50秒后可以重新发送    private function sendMsgResult($resp,$phone,$code){        if ($resp->result->success && !$resp->result->code) {            $data['phone']=$phone;            $data['code']=$code;            $data['send_time']=time();            $result=M("code")->add($data);            if($result){                $data="发送成功";            }else{                $data="发送失败";            }        } else if ($resp->code || $resp->msg == "Remote service error") {            $data="发送失败";        } else {            $data="发送失败";        }        return $data;    }        // 验证短信验证码是否有效,前端用jquery validate的remote    public function checkSMSCode(){        $mobile = $_POST['mobile'];        $code = $_POST['code'];        $nowTimeStr = date('Y-m-d H:i:s');        $smscodeObj = M("code")->where("mobile='$mobile'")->find();        if($smscodeObj){            $smsCodeTimeStr = $smscodeObj['send_time'];            $recordCode = $smscodeObj['code'];            $flag = $this->checkTime($nowTimeStr, $smsCodeTimeStr);            if($flag&&$code==$recordCode){                echo true;            }else{                echo false;            }        }    }
  • 用的类里,我是放在注册类里调用

//发送短信,调用BaseController里的方法,因为其他模块也要用到这方法

  public function send_message(){     $phone=I("post.phone");     //data返回失败 但不影响使用     $data=$this->send_phone($phone);     $this->ajaxReturn($data,"JSON"); }

4.前台 ajax部分功能已经具备,还待完善

//发送手机ajaxfunction send_message() {        if($("#phone input").valid()){            var phone=$("#phone input").val();            $.post("{:U('Register/send_message')}","phone="+phone,function(data){                            });                $("#send_message").html("发送成功");            $("#send_message").css("background-color","#2f9cff");        }}

文章来源:智云一二三科技

文章标题:关于thinkphp下阿里大于短信验证

文章地址:https://www.zhihuclub.com/25868.shtml

关于作者: 智云科技

热门文章

网站地图