文档章节

Thinkphp5使用阿里大于短信验证

陈志珂
 陈志珂
发布于 2017/06/04 16:15
字数 1536
阅读 6
收藏 0
点赞 0
评论 0

标签:阿里大于 短信验证 php 2017-06-02 10:10 星期五

现在各种平台登录验证很多时候会使用短信验证,快捷安全,有很多平台提供短信验证服务,相比较而言阿里大于价格比较便宜,快捷,所以在在千锋日常的PHP教学中多以此为例来说明短信验证的使用。下面我们在tp5中说明如何使用阿里大于进行短信验证。

 

一、首先到阿里大于平台上注册,创建应用

 

阿里大于地址为:https://www.alidayu.com/,点击免费入住,然后注册,注册完毕后,进入管理中心。如下图所示在左边导航栏里选择---应用管理,然后在右边内容窗口里选择创建应用。

 Thinkphp5使用阿里大于短信验证

 在左侧导航栏里选择应用管理----应用列表。然后在右边窗口中选择创建应用

 Thinkphp5使用阿里大于短信验证

 

创建完毕后,可以获得应用的appkey和appsecret,这两个东东很重要

 

Thinkphp5使用阿里大于短信验证

 

 

 

 

 

然后在左侧的导航栏李选择SDK下载,在右边窗口里选择php版。

 Thinkphp5使用阿里大于短信验证

 

下载完成后解压,得到如下文件:

Thinkphp5使用阿里大于短信验证 

 

在所给的这些文件里,只要以下文件就够了:

 Thinkphp5使用阿里大于短信验证

我们把这些文件放到tp5的extend目录里,建立一个文件夹alidayu,把所有文件放到该文件夹下。

然后回到阿里大于,在左侧导航栏里选择配置管理----验证码,然后在右侧窗口里可以看到两个选择项:配置短信签名 和 配置短信模板

 Thinkphp5使用阿里大于短信验证

 

 

1 首先配置短信签名,这个是必须的,界面如下,根据自己的需要选择,个人使用选择第一个就行。

 Thinkphp5使用阿里大于短信验证

 

 

2.配置短信模板

 

选择配置短信模板,然后添加模板:

 Thinkphp5使用阿里大于短信验证

 

这里,模板内容是重点,比如说验证码短信一般会有一个随机数,这个随机数如何表示内,就用${number}这种方式表示,其中${number}就是php中对应的变量,用几个就定义几个,{}里面是变量的名字。配置完成后如下图所示。

 Thinkphp5使用阿里大于短信验证

 

重点是模板ID,这个在程序代码中要用。

 

二、在tp5中引用

 

1.项目的目录结构

 Thinkphp5使用阿里大于短信验证

 

要想在项目中引用extend下的alidayu下面的几个类,必须给类添加名空间。

 

2、给下载的文件添加名空间。

 

在tp5中加载类使用的时自动加载,是根据名空间加载的,所以,下载的几个类文件,必须定义名空间才能引用,名空间必须和目录一致。以AlibabaAliqinFcSmsNumSendRequest.php为例说明:

 Thinkphp5使用阿里大于短信验证

 

  

3.在控制器里引用验证码类

 Thinkphp5使用阿里大于短信验证

 

如果,编译出现找不到TopClient类的提示,可以在application下config.php里修改:

 Thinkphp5使用阿里大于短信验证

 

添加一个名空间和文件夹的对照,则一切ok。

 

4. 编写短信验证码方法

 

    //短信验证

    public function sendSMS()

    {

        if (request()->isAjax()) {//如果是ajax请求

            $tel = input('mobile');//手机号

                            

            $c = new TopClient;//大于客户端  

            $c->format = 'json';//设置返回值得类型

 

            $c->appkey = "23885965";//阿里大于注册时给的应用appkey

            $c->secretKey = "ccd724869075d0d740806302b664bb86";//注册的app secretkey,修改成自己的

                                                                

            //请求对象,需要配置请求的参数  

            $req = new AlibabaAliqinFcSmsNumSendRequest;

            $req->setExtend("123456");//公共回传参数,可以不传

            $req->setSmsType("normal");//短信类型,传入值请填写normal

             

            //签名,阿里大于-控制中心-验证码--配置签名 中配置的签名,必须填

            $req->setSmsFreeSignName("自己的签名");//根据前面配置短信签名里的前面做相应的修改

             

            //你在短信中显示的验证码,这个要保存下来用于验证

            $num = rand(100000,999999);              

            session('code',$num);//保存到session

 

            //短信模板变量,传参规则{"key":"value"},key的名字须和申请模板中的变量名一致,

           //传参时需传入{"code":"1234","product":"alidayu"}

            $req->setSmsParam("{\"number\":\"$num\"}");//模板参数

                                                        

            //短信接收的手机号码,可以有多个,具体参照大于号帮助文档。

            $req->setRecNum($tel);

 

            //短信模板。阿里大于-控制中心-验证码--配置短信模板 必须填

            $req->setSmsTemplateCode("SMS_69685034");//根据前面配置模板是生成的模板ID修改

            $resp = $c->execute($req);//发送请求

            return $resp;

        }  

    }

三、html文件

 

<!DOCTYPE html>

<html>

<head>

    <title>用户注册</title>

    <style type="text/css">

    *{margin: 0px;padding: 0px;}

    .content{width: 360px;background: pink;}

    .title{text-align: center;font-size: 18px;width:100%;height: 30px;line-height: 30px;}

    .register{height: 30px;line-height: 30px;width: 60px;text-align: center;float: right;}

    a{text-decoration: none;}

    .middle{width: 360px;}

    .headimage{width: 100%;}

    .headimage p{text-align: center;}

    .middle input{display: block;width: 98%;margin: 0px auto;height: 30px;}

    .middle input[type='submit']{margin-top: 20px;}

    .middle form .code{display: inline-block;width: 75%;height: 30px;}

    .middle form button{width: 22%;height: 32px;}

    </style>

    <script type="text/javascript" src='/static/index/js/jquery-1.11.3.min.js'></script>

</head>

<body>

    <div class='content'>

        <div class='top'>

            <div class='title'>注册</div>

        </div>

        <div class='middle'>

            <div class='headimage'>

                <img src="">

                <p>书非借不能读</p>

            </div>

            <form action='/index/user/doLogin' method='post'>

                <input type="text" name="phone" placeholder="手机号" id='mobile'>

                <input type="password" name="password" placeholder="密码">

                <input type="text" name="code" class='code' placeholder="验证码"><button id='sendmsg'>获取验证码</button>

                <input type="submit" value='注册'>

            </form>

        </div>

 

    </div>

</body>

<script type="text/javascript">

    //验证手机号

    $("#mobile").blur(function(){

        var value = $(this).val();

        console.log(value,typeof value);

        if ( 0 == value.lenght || "" == value) {

            //alert("手机号不能为空!")

            $(this).focus();

        } else {

            $.post('/index/user/validPhone',{phone:value},function(data){

                if (data) {

                    alert("手机号重复!");

                }

            });

        }

         

    });

 

    var InterValObj; //timer变量,控制时间

    var count = 60; //间隔函数,1秒执行

    var curCount;//当前剩余秒数

    var code = ""; //验证码

    var codeLength = 6;//验证码长度

 

    $('#sendmsg').click(function () {

        var phone = $("#mobile").val();

        console.log(phone);

        $.ajax({

            type: "POST",

            url: "/index/user/sendSMS",

            data: "mobile="+$("#mobile").val() ,

            success: function (data) {

                console.log(data);

                    //data.result && data.result.success

                    if(data){

                        curCount = count;

                       //设置button效果,开始计时

                       $("#sendmsg").css("background-color", "LightSkyBlue");

                       $("#sendmsg").attr("disabled", "true");

                       $("#sendmsg").html("获取" + curCount + "秒");

                       InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次

                      // alert("验证码发送成功,请查收!");

                  }

              },

              dataType: 'json'

          });

        return false;

    })

 

    function SetRemainTime() {

        if (curCount == 0) {

            window.clearInterval(InterValObj);//停止计时器

            $("#sendmsg").removeAttr("disabled");//启用按钮

            $("#sendmsg").css("background-color", "");

            $("#sendmsg").html("重发验证码");

            code = ""; //清除验证码。如果不清除,过时间后,输入收到的验证码依然有效

        }

        else {

            curCount--;

            $("#sendmsg").html("获取" + curCount + "秒");

        }

    }

</script>

</script>

</html>

更多实用php技术,请持续关注千锋教学日记。

© 著作权归作者所有

共有 人打赏支持
陈志珂
粉丝 0
博文 10
码字总数 12224
作品 0
wemall 7.0 开源系统更新,支持小程序开发

wemall7.0 开源系统,基于thinkphp5开发,支持composer,优化核心,减少依赖,基于全新的架构思想和命名空间。支持小程序和公众号开发。 1.【更新】优化系统安装 2.【更新】更新上传过滤 3....

einsqing ⋅ 2017/06/12 ⋅ 1

短信服务 Go语言开发

短信服务 Go语言开发 采用的是阿里云-云通信-短信服务,原来的阿里大于品牌已经升级为“阿里云 · 云通信”。 用途 用户注册、找回密码、用户身份验证、验证码登录等等 使用说明 将其中的acc...

二郎神六号 ⋅ 2017/08/08 ⋅ 0

基于 ThinkPHP 的后台管理框架 - Tplay

Tplay是一款基于ThinkPHP5.0.13 + layui2.2.45 + Mysql开发的后台管理框架,PHP版本要求提升到5.5,Tplay集成了一般应用所必须的功能模块,为开发者减少重复性的工作,提升开发速度,规范团队...

听雨er ⋅ 2017/12/24 ⋅ 7

wemall 7.0 开源系统发布,支持公众号和小程序开发

wemall7.0 开源系统,基于thinkphp5开发,支持composer,优化核心,减少依赖,基于全新的架构思想和命名空间。 wemall7.0特性: 基于TP5,性能优越 前后分离,简单方便 插件扩展,功能丰富 ...

einsqing ⋅ 2017/05/03 ⋅ 7

einsqing/wemall

WeMall商城 7.0 (不含商城) wemall7.0 开源系统,基于thinkphp5开发,支持composer,优化核心,减少依赖,基于全新的架构思想和命名空间。 thinkphp5.0特性 基于命名空间和众多PHP新特性 核心...

einsqing ⋅ 2014/05/24 ⋅ 0

flc1125/alidayu

阿里大于(鱼) - v2.0 PS:阿里短信 https://github.com/flc1125/dysms 更新 v2.0.6 (2017-08-12) fixed #6 v2.0.5 (2017-01-25) 修复autoload.php https://github.com/flc1125/alidayu/issue......

flc1125 ⋅ 2017/03/10 ⋅ 0

Web安全指南 | 八招应对短信验证码攻击

如今,大量的网站、网站、手机app都在使用短信验证码作为验证用户身份的安全技术措施。尤其在年底,企业的促销、抽奖、互动活动会迎来一个高峰期,用到短信验证码的场景非常频繁。 但近期,阿...

正禾 ⋅ 03/12 ⋅ 0

节日活动季安全指南 | 八招应对短信验证码攻击

如今,大量的网站、网站、手机app都在使用短信验证码作为验证用户身份的安全技术措施。尤其在年底,企业的促销、抽奖、互动活动会迎来一个高峰期,用到短信验证码的场景非常频繁。 但近期,阿...

云安全2016 ⋅ 01/08 ⋅ 0

beego 阿里大鱼短信验证码接口

工作中需要用到短信登录注册验证,所以自己用beego写了个阿里大鱼的短信验证码接口 一、配置,beego的配置文件 conf/app.conf,这些注册阿里大鱼帐号就会分配给你,注册地址:http://www.al...

别人说我名字很长 ⋅ 2016/06/28 ⋅ 1

WePush v1.10.0 发布,专注批量推送的小而美的工具

WePush v1.10.0 已发布,它是一个专注批量推送的小而美的工具,目前支持的消息类型:微信模板消息、微信客服消息、阿里云短信、阿里大于模板短信 。 更新内容如下: v1.10.0 新增对阿里云短信...

RememBerBe ⋅ 03/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java的Excel导出工具类

首先在POM中引入需要的Jar <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency><dependency><groupId>o......

Kxvz ⋅ 2分钟前 ⋅ 0

Java 3DES加密解密

import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.binary.Base64; //算法代码[java] view plain copy /** * 转换成十六进制字......

说回答 ⋅ 9分钟前 ⋅ 0

php 浮点型计算精度问题

今天碰到一个金额计算的问题,浮点数做差,结果有误(精度有问题)。 $a = floatval('6');$b = floatval('4.99');$m = floatval('1');$r = $a - $b;$r = $r - $m;var_dump($r);//f...

stupidboy ⋅ 31分钟前 ⋅ 0

Mahout推荐算法之SlopOne

一、 算法原理 有别于基于用户的协同过滤和基于item的协同过滤,SlopeOne采用简单的线性模型估计用户对item的评分。如下图,估计UserB对ItemJ的偏好 图(1) 在真实情况下,该方法有如下几个...

xiaomin0322 ⋅ 36分钟前 ⋅ 0

LVM讲解

LVM是什么 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地...

李超小牛子 ⋅ 45分钟前 ⋅ 0

mysql更改密码、连接mysql、mysql常用命令

1. 更改mysql的root账户密码: mysql中root账户和系统root不是一个账户 1.1 更改环境变量PATH,增加mysql绝对路径 由于mysql安装目录为/usr/local/mysql/,所以系统不能直接使用mysql,需把/...

laoba ⋅ 46分钟前 ⋅ 0

阿里云发布企业数字化及上云外包平台服务:阿里云众包平台

摘要: 阿里云正式发布旗下众包平台业务(网址:https://zhongbao.aliyun.com/),支持包括:网站定制开发,APP、电商系统等软件开发,商标、商品LOGO、VI、产品包装设计、营销推广、大数据人...

猫耳m ⋅ 46分钟前 ⋅ 0

阿里云发布企业数字化及上云外包平台服务:阿里云众包平台

摘要: 阿里云正式发布旗下众包平台业务(网址:https://zhongbao.aliyun.com/),支持包括:网站定制开发,APP、电商系统等软件开发,商标、商品LOGO、VI、产品包装设计、营销推广、大数据人...

阿里云云栖社区 ⋅ 50分钟前 ⋅ 0

1.03-Maven中使用ueditor富文本编辑器

起因:在maven仓库未找到百度的ueditor的jar包 操作: 1.下载百度的ueditor的jar包 2.打开命令行,切换到ueditor的下载位置,运行一下命令: mvn install:install-file -Dfile=ueditor-1.1....

静以修身2025 ⋅ 55分钟前 ⋅ 0

几道Spring 面试题

1、BeanFactory 接口和 ApplicationContext 接口有什么区别? ApplicationContext 接口继承BeanFactory接口 Spring核心工厂是BeanFactory BeanFactory采取延迟加载,第一次getBean时才会初始...

职业搬砖20年 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部