• 技术文章 >php框架 >ThinkPHP

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

    藏色散人藏色散人2020-12-18 09:07:07转载698
    下面由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.后端

    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部分功能已经具备,还待完善

    //发送手机ajax
    function 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下阿里大于短信验证的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除
    专题推荐:php
    上一篇:关于 TP6 自定义状态码 下一篇:ThinkPHP的一些渗透方式
    大前端线上培训班

    相关文章推荐

    • ThinkPHP路由参数以及资源路由解析• ThinkPHP检测URL变量和规则路由是否匹配• thinkphp index.php隐藏的方法• 【分享案例】ThinkPHP6.0 导出 Excel• thinkphp 6.0 swoole扩展websocket的使用

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网