ホームページ  >  記事  >  PHPフレームワーク  >  thinkphp での Alibaba SMS 認証について

thinkphp での Alibaba SMS 認証について

藏色散人
藏色散人転載
2020-12-18 09:06:422530ブラウズ

thinkphp フレームワーク の次のチュートリアル コラムでは、thinkphp での Alibaba SMS 認証について紹介します。困っている友人の役に立てば幸いです。

この方法は Thinkphp をベースにして jquery.validate を使用していますが、もちろん特定のプロジェクトで使用する必要はありませんので、以下に手順を書いておきます。

1. 準備

1.

http://www.alidayu.com にログインし、ウェブサイト
にアクセスし、タオバオ アカウントでログインします
2. 管理センターに入る

thinkphp での Alibaba SMS 認証について

3. 設定

(1) SMS 署名の設定

thinkphp での Alibaba SMS 認証について

thinkphp での Alibaba SMS 認証について

(2) SMS テンプレートの構成

thinkphp での Alibaba SMS 認証について

thinkphp での Alibaba SMS 認証について

構築後、必要なのは APPkey APPsecret だけです

thinkphp での Alibaba SMS 認証について

thinkphp での Alibaba SMS 認証について

thinkphp での Alibaba SMS 認証について

2 をテストすることもできます。データベース

thinkphp での Alibaba SMS 認証について

3. バックエンド

  • はじめに
    Alidayu クラス ファイルをダウンロードし、/Thinkphp/Library/org/Alidayu (フォルダー) に配置します。不正行為を避けるために大文字にする必要があります)、サーバーにデプロイした後に問題が発生しました)

thinkphp での Alibaba SMS 認証について

  • ##一般クラス

  // 生成短信验证码
    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 での Alibaba SMS 認証についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。