Heim >PHP-Framework >Denken Sie an PHP >Informationen zur Alibaba SMS-Verifizierung unter thinkphp

Informationen zur Alibaba SMS-Verifizierung unter thinkphp

藏色散人
藏色散人nach vorne
2020-12-18 09:06:422552Durchsuche

Die folgende Tutorial-Kolumne des thinkphp-Frameworks stellt Ihnen die Alibaba-SMS-Verifizierung unter thinkphp vor. Ich hoffe, dass sie Freunden, die sie benötigen, hilfreich sein wird!

Diese Methode basiert auf Thinkphp und verwendet jquery.validate. Natürlich kann sie nicht in bestimmten Projekten verwendet werden.

1. Vorbereitung

1. Melden Sie sich an
http://www.alidayu.com, melden Sie sich einfach mit Ihrem Taobao-Konto an

Informationen zur Alibaba SMS-Verifizierung unter thinkphp3 (1) Konfiguration der SMS-Signatur


Informationen zur Alibaba SMS-Verifizierung unter thinkphp

(2) Konfiguration der SMS-Vorlage Informationen zur Alibaba SMS-Verifizierung unter thinkphp

Informationen zur Alibaba SMS-Verifizierung unter thinkphp

Nach der Erstellung benötigen Sie nur noch APPkey APPsecretInformationen zur Alibaba SMS-Verifizierung unter thinkphp

Informationen zur Alibaba SMS-Verifizierung unter thinkphp

Testen Informationen zur Alibaba SMS-Verifizierung unter thinkphp

2. Datenbank wird nach der Bereitstellung auf dem Server angezeigt Frage)

Informationen zur Alibaba SMS-Verifizierung unter thinkphp

Informationen zur Alibaba SMS-Verifizierung unter thinkphp

In der von

  •   // 生成短信验证码
        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;
                }
            }
        }


    verwendeten Klasse in der allgemeinen Klasse habe ich es in die Registrierungsklasse eingefügt, um

Informationen zur Alibaba SMS-Verifizierung unter thinkphp// aufzurufen Senden Sie eine Textnachricht und rufen Sie die Methode in BaseController auf, da auch andere Module diese Methode verwenden müssen

  public function send_message(){
     $phone=I("post.phone");
     //data返回失败 但不影响使用
     $data=$this->send_phone($phone);
     $this->ajaxReturn($data,"JSON");
 }
    4 Einige Funktionen von Front-End-Ajax sind bereits verfügbar und müssen verbessert werden
  • //发送手机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");
            }
    
    }

Das obige ist der detaillierte Inhalt vonInformationen zur Alibaba SMS-Verifizierung unter thinkphp. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen