短信验证码生成步骤

一、点击获取验证码触发事件,生成短信验证码。

   

$(".btn2").click(function(){
    var url="/Public/message";
    var data=$("#username").val();
    $.ajax({
        url:url,
        data:{'phone':data},
        type:'POST',
        dataType:'json',
        success: function(r){
            if(r.status==200) {
                layer.msg(r.msg, {icon: 6});
            }
        }
    });
});

二、生成短信验证码需要准备以下几个步骤

    1.短信通道 在tp的配置文件中写的。

  1. // 253 云通讯 短信发送接口配置
    'SMS_253' => array(
        'URI'        => '',
        'APP_KEY'    => '', // 账号
        'APP_SECRET' => '', // 密码
    ),

    2.复制下面两个方法到公共文件function.php中

        

/**
     * 用file_get_contents函数,以post方式发送数据处理 类似curl
     *可以写在function中
     */
    function httpPostJson($url, $data = ''){
        $opts = array(
            'http' => array(
                'method'  => 'POST',
                'header'  => "Content-type: application/json;charset=UTF-8;Content-Length: " . strlen($data),
                'timeout' => 30,
                'content' => $data,
            ),
        );
    //文本数据流创建
    $context = stream_context_create($opts);
    return file_get_contents($url, FALSE, $context);
}
/**
 * 自定义短信发送  可以写在function中
 * @param $mobilePhones
 * @param $sendMsg
 * @return array
 */
function SendSMS($mobilePhones,$sendMsg, $signature = '【公司名称】'){
    $requestData = array(
        'account'  => C(''),
        'password' => C(''),
        'msg'      => urlencode($signature . $sendMsg),
        'phone'    => $mobilePhones,
        'report'   => 'true',
    );
    $result = httpPostJson(C(''), json_encode($requestData));
    $result = json_decode($result, TRUE);
    if($result === NULL || $result['code'] !== '0' || !empty($result['errorMsg'])){
        return FALSE;
    }
    return $result['msgId'];
}

    3.编写点击获取验证码触发的方法

public function message(){
    $mobilePhonesStr= I('post.phone');
    //验证码随机数
    $num = rand(1000,9999);
    $sendMsg="验证码是:".$num;
    //调用function.php中SendSMS方法
    $result= SendSMS($mobilePhonesStr,$sendMsg);
    if($result){
       session('smscheckcode',$num);
        //echo session('smscheckcode');die;
        $r['status']=200;
        $r['msg']="验证码已发送";
        $this->ajaxReturn($r);
    }else{
        $r['status']=400;
        $r['msg']="验证码发送失败";
        $this->ajaxReturn($r);
    }
}

        

猜你喜欢

转载自blog.csdn.net/lw545034502/article/details/79830413