Maison  >  Article  >  cadre php  >  À propos de la vérification des SMS d'Alibaba sous thinkphp

À propos de la vérification des SMS d'Alibaba sous thinkphp

藏色散人
藏色散人avant
2020-12-18 09:06:422512parcourir

La colonne tutorielle suivante du framework thinkphp vous présentera la vérification Alibaba SMS sous thinkphp. J'espère qu'elle sera utile aux amis qui en ont besoin !

Cette méthode est basée sur Thinkphp et utilise jquery.validate. Bien sûr, elle ne peut pas être utilisée dans des projets spécifiques. J'écrirai les étapes ci-dessous.

1. Préparation

1. Connectez-vous à
http://www.alidayu.com et accédez au site Web
Connectez-vous avec votre compte Taobao
2. Entrez dans le centre de gestion

À propos de la vérification des SMS dAlibaba sous thinkphp

3. Configuration
(1) Configurer la signature SMS

À propos de la vérification des SMS dAlibaba sous thinkphp

À propos de la vérification des SMS dAlibaba sous thinkphp

(2) Configurer le modèle SMS

À propos de la vérification des SMS dAlibaba sous thinkphp

À propos de la vérification des SMS dAlibaba sous thinkphp

Une fois construit, tout ce dont vous avez besoin est APPkey APPsecret

À propos de la vérification des SMS dAlibaba sous thinkphp

À propos de la vérification des SMS dAlibaba sous thinkphp

Vous pouvez également tester

À propos de la vérification des SMS dAlibaba sous thinkphp

2. Base de données

À propos de la vérification des SMS dAlibaba sous thinkphp

3. Backend

  • Introduction
    Téléchargez le fichier de classe Alidayu et placez-le dans /Thinkphp/Library/org/Alidayu (le dossier doit être en majuscule, ce sera un piège pour vous-même, un problème est survenu après le déploiement sur le serveur)

À propos de la vérification des SMS dAlibaba sous thinkphp

  • En général classe

  // 生成短信验证码
    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;
            }
        }
    }
  • Dans la classe utilisée, je le mets dans la classe d'inscription et j'appelle

//Envoyer un message texte et appelez la méthode dans BaseController, car d'autres modules doivent également l'utiliser. Cette méthode

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

4. Certaines fonctions ajax frontales sont déjà disponibles et doivent être améliorées

//发送手机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");
        }

}
.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer