PHP 实现 阿里云短信发送 短信通知教程

admin 阅读:81 2024-03-02

首先介绍下短信注册登录流程:

  1.  注册页面点击获取手机号验证码按钮,用jquery的click事件POST或GET方法把手机号发送到后台控制器;
  2. 后台控制器创建函数,收到手机号后生成随机码,例如:6位的随机数code=rand(100000,999999);
  3. 利用阿里云短信服务接口将生成的随机码,以短信形式发送给注册用户;
  4. 用户在注册页面输入接收到的验证码,点击提交登录,后台处理用户提交的手机号+验证码,与自己后台存储的手机号+验证码是否匹配,匹配则判断登录成功,否则提示用户登录失败;

第一步:下载PHP版本的[SDK轻量版]代码,解压,重命名为api文件夹名称,并将该文件夹存放在ThinkPHP/Library/Vendor目录位置(存放位置可以自己选择);

第二步,在根目录Application/Admin/BaseController基础控制器中写入一下代码:

   
   //引用这几个文件
    use AliyunCoreConfig;
    use AliyunCoreProfileDefaultProfile;
    use AliyunCoreDefaultAcsClient;
    use AliyunApiSmsRequestV20170525SendSmsRequest;  
    //这个方法和上边的是一起的,可以放到基础控制器中
    /**
     * 发送短信接口
     * 文档地址 https://help.aliyun.com/document_detail/55491.html?spm=5176.doc55491.6.560.0KUKny
     * @param $mobile 手机号
     * @param $sms_code 短信模板ID
     * @param $params 模板替换参数
     * @return mixed code = OK 表示完成
     */
    public function sendSms($mobile, $sms_code, $params) {
       //阿里云SDK放在了ThinkPHP/Library/Vendor目录中
        require_once VENDOR_PATH . 'AliyunSms/vendor/autoload.php';
        Config::load();
        $sms_config = C('SMS_CONFIG'); //这个写在了config文件里的,tp3.2直接用大C就可以取到
        $template_param = $params;
        $sign_name = $sms_config['sign'];
        $template_code = $sms_code;
        $product = 'Dysmsapi';
        $domain = 'dysmsapi.aliyuncs.com';
        $region = 'cn-hangzhou';
        $profile = DefaultProfile::getProfile($region, $sms_config['key'], $sms_config['secret']);
        DefaultProfile::addEndpoint('cn-hangzhou', 'cn-hangzhou', $product, $domain);
        $acsClient = new DefaultAcsClient($profile);
        $request = new SendSmsRequest();
        $request->setPhoneNumbers($mobile);
        $request->setSignName($sign_name);
        $request->setTemplateCode($template_code);
        if ($template_param) {
            $request->setTemplateParam(json_encode($template_param));
        }
        $acsResponse = $acsClient->getAcsResponse($request);
        $result = json_decode(json_encode($acsResponse), true);
        return $result;
    }

第三步,在继承基础控制器的其他控制器中,配置好所用的参数,就可以直接使用了!就是如此简单哦!

         $captcha = rand(100000, 999999);
         $params = [ 'code' => $captcha ];
         $sms_code = 'SMS_159960023'; // 短信模板ID 
         $mobile = $post_data['mobile']; //手机号
         $this->sendSms($mobile, $sms_code, $params);


声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!