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

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

藏色散人
Libérer: 2020-12-18 09:07:07
avant
2532 Les gens l'ont consulté

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;
            }
        }
    }
Copier après la connexion
  • 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");
 }
Copier après la connexion

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");
        }

}
Copier après la connexion
.

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!

Étiquettes associées:
php
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal