PHP框架(TP5,Laravel)+阿里云SMS短信服务发送验证码

短信服务

短信服务在当下应该是在各类网站,应用上面必需的一项服务。我们现在的各种操作都离不开短信验证码。具体就不一一列举了。
我想介绍的是:阿里云SMS短信服务

优点:

1.99%到达率,电信级运维保障,实时监控自动切换。大容量高并发;支撑双11期间2亿用户发送6亿条短信。
2.3秒可达,三网合一专属通道,与工信部携号转网平台实时互联。变量灵活,支持带入变量,内容灵活,可适应支持各种业务场景。
3.支持多种推广内容的短信发放,为提升企业产品增加曝光率提供帮助。业务推广、新产品宣传、会员关怀等进行短信发送。
4.可以后端服务处理完成任务时,回调通知用户。进而减少用户,Web前端和后端服务之间大量不必要的轮询请求。
5.可查看请求量、发送成功量、失败量等统计数据;通过日期、手机号等维度,查看发送详情。

当然还有其他很多供应商也有这个短信服务,但是缺点我就不多说了。到达率低,延时时间长,体验差。

具体操作

首先,你需要注册一个阿里云账号。
1.

2.

注意:如果你仅仅是为了测试,官方送的代金券够用了。
3.开通阿里云AccessKey:云账号AccessKey具有所有云产品API的访问权限,一旦泄露将导致极大的安全风险!

Thinkphp5中使用(第三方类库在各个框架使用大同小异)

说明

1.下载SDK包,当然你也可以去官网下载。我在这里提供一份:阿里云短信SDK 密码:9um7
2.将这个文件夹放入TP5框架中extend目录中(extend目录用于存放一些第三方类库)

代码

1.前端代码:记得使用前引入jQuery

<input type="number" name="number"  placeholder="填写手机号码" /><button class='button'>获取验证码</button>  
  
//点击事件  
$(".button").click(function(){  
var number = $(".number").val();//获取手机号码  
//ajax异步发送  
$.ajax({  
url: url,//请求地址,html页面传过来的  
type: "post",  
data: {number: "number"},  
success:function(res){  
//执行完毕之后调用的方法  
connsole.log(res);  
},  
});  
  
}); 

2.PHP代码

<?php  
namespace app\index\controller;  
use think\Controller;  
use think\Loader;  
class Index extends Controller  
{  
    public function index()  
    {  
        if(request()->isPost()){//和TP3中略有不同IS_POST等方法弃用  
              
            $number = input('number');//input助手函数   获取输入数据 支持默认值和过滤  
              
            Loader::import('alimsg.api_demo.SmsDemo',EXTEND_PATH);//对应extend目录,路径,如果你对SmsDemo类添加了命名空间可在上面 use 后在此处直接实例化  
  
            $code = $this->random();  
  
            //得到信息文件并执行.实例化阿里短信类  
            $msg = new \SmsDemo('L******2','U*****************a');//注意类名前面的  \ 此处写的就是Access key id 和Access key secret  
              
            //此配置在sdk包中有相关例子  
            $res = $msg->sendSms(  
                //短信签名名称  
                "*****",//此处填写你在阿里云平台配置的短信签名名称(第二步有说明)  
                //短信模板code  
                "SMS_107015125",//此处填写你在阿里云平台配置的短信模板code(第二步有说明)  
                //短信接收者的手机号码  
               " $number",  
                //模板信息  
                Array(  
                    'number' => $code,//随机变化的  
                )  
            );  
            dump($res);die;  
            $response = array($res);  
  
        }  
        return $this->fetch('index');  
    }  
  
    //生成所发送的验证码并返回  
    public function random()  
    {  
        $length = 6;  
        $char = '0123456789';  
        $code = '';  
        while(strlen($code) < $length){  
            //截取字符串长度  
            $code .= substr($char,(mt_rand()%strlen($char)),1);  
        }  
        return $code;  
    }  
}  
结果

如果你执行上述代码返回如下结果,说明执行成功。

在控制器和模型中你可以配合你的业务逻辑来进行修改。上述代码你已经拿到了短信验证码,然后和用户填写发送过来的进行匹配,和图片验证码一个道理

谷文杰博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论
  • 本站使用Laravel5.4框架程序搭建 © 2016-2017 guwenjie.freephp.top 版权所有 ICP证:京ICP备17038807号
  • 联系邮箱:guguguwenjie@163.com