PHP获取阿里云短信验证方法

PHP阿里云获取短信验证方法

1需要先开通阿里云的短信服务

2需要先申请短信签名(具体申请详情请参考说明,申请签名的适用场景请根据实际需求)

3在模板管理中需添加模板(具体模板内容,请根据实际需求申请)

申请完成后阿里云后台会在两小时内出审核结果


短信服务SDK及DEMO下载

SDK下载链接地址:https://help.aliyun.com/document_detail/101874.html?spm=5176.12207334.0.0.68a91cbe3peRcW,根据不同的开发语言下载不同的sdk

只用过旧版,就以旧版php为例

下载完成后解压放到桌面上

php用了TP框架的 ,就将刚才的文件放入extend目录下

现在就需要配置我们需要的参数在SmsDemo.php文件中需要将下列的参数替换成自己的


        // TODO 此处需要替换成开发者自己的AK (https://ak-console.aliyun.com/)
        $accessKeyId = "yourAccessKeyId"; // AccessKeyId

        $accessKeySecret = "yourAccessKeySecret"; // AccessKeySecret

还需将下列参数替换成可用的

   // 必填,设置短信接收号码
        $request->setPhoneNumbers("12345678901");

        // 必填,设置签名名称,应严格按"签名名称"填写,请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign
        $request->setSignName("短信签名");

        // 必填,设置模板CODE,应严格按"模板CODE"填写, 请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/template
        $request->setTemplateCode("SMS_0000001");

        // 可选,设置模板参数, 假如模板中存在变量需要替换则为必填项
        $request->setTemplateParam(json_encode(array(  // 短信模板中字段的值
            "code"=>"12345",
            "product"=>"dsd"
        ), JSON_UNESCAPED_UNICODE));

列如:

      // 必填,设置短信接收号码
        $request->setPhoneNumbers($con['phone']);

        // 必填,设置签名名称,应严格按"签名名称"填写,请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign
        $request->setSignName($con['name']);

        // 必填,设置模板CODE,应严格按"模板CODE"填写, 请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/template
        $request->setTemplateCode($con['template']);

        // 可选,设置模板参数, 假如模板中存在变量需要替换则为必填项
        $request->setTemplateParam(json_encode(  // 短信模板中字段的值
            $con['param']
        , JSON_UNESCAPED_UNICODE));

现在SmsDemo中需要替换的已经完成

现在需要在自己的控制器下建立一个sms.php文件

代码如下:

//引入短信验证文件
use al_dysms\api_demo\SmsDemo;

class Sms extends Base
{
    public function send($phone, $pwd, $template)
    {
        if (!((user_md5($phone)) == $pwd)) {
            return 'md5验证false';
        }
        $sms = new SmsDemo();
        //模板参数,自定义了随机数,你可以在这里保存在缓存或者cookie等设置有效期以便逻辑发送后用户使用后的逻辑处理
        $code = mt_rand(100000, 999999);
        $sql = [
            'captcha' => $code,
            'phone' => $phone,
            'add_time' => time()
        ];
        db('captcha')->insert($sql);
        $templateParam = ['code' => $code];//设置模板参数
        $con = [
            'phone' => $phone,//发送验证码手机号
            'name' => 'xxx', //短信签名
            'template' => $template,//模板CODE
            'param' => $templateParam//模板参数
        ];
        $m = $sms->sendSms($con);
        //类中有说明,默认返回的数组格式,如果需要json,在自行修改类,或者在这里将$m转换后在输出
        return $m;
    }
}

然后在创建发送短信验证captcha.php文件

代码如下:

use app\adminfunny\controller\Sms;

/**
 * Class Captcha
 * @package app\adminsum\controller
 * @title 短信验证
 */
class Captcha extends Base
{
    /**
     * @title 获取注册验证码
     * @desc  {"0":"接口地址:adminsum/captcha/sendRegisterSms","1":"请求方式:GET或者POST","2":"接口备注:获取短信注册验证码"}
     * @param {"name":"phone","type":"int","required":true,"default":"1","desc":"手机号"}
     * @param {"name":"pwd","type":"int","required":true,"default":"1","desc":"验证参数(就是手机号)"}
     */
    public function sendRegisterSms()
    {
        $phone = input('phone');
        if (!$phone) {
            $this->apiReturn(303, '请输入手机号');
        }
        //验证手机号码格式
        $this->phoneFormat($phone);
        $pwd = input('pwd');
        if (!$pwd) {
            $this->apiReturn(303, '缺少pwd');
        }

        //引入短信验证方法
        $sms = new Sms();
        //config('AL_TEMPLATE_REGISTER') 这里需要填写成自己的模板code
        $result = $sms->send($phone, user_md5($pwd), config('AL_TEMPLATE_REGISTER'));
        if (!$result) {
            $this->apiReturn(303, '发送失败', $result);
        } else {
            $this->apiReturn(200, '发送成功', $result);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值