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

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

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

 

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

 

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

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

 

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

 

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

 

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

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

 

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

2.配置短信模板

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

 

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

 

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

二、在tp5中引用

1.项目的目录结构

 

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

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

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

 

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

 

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

 

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

4. 编写短信验证码方法

//短信验证
public function sendSMS()
{
if (request()->isAjax()) {//如果是ajax请求
$tel = input('mobile');//手机号 $c = new TopClient;//大于客户端
$c->format = 'json';//设置返回值得类型 $c->appkey = "23885965";//阿里大于注册应用的key
$c->secretKey = "ccd724869075d0d740806302b664bb86";//注册的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技术,请持续关注千锋教学日记。

Thinkphp5使用阿里大于短信验证的更多相关文章

  1. ASP版_阿里大于短信API Demo

    阿里大于申请地址:http://www.alidayu.com 阿里大于短信发送Demo: ******index.asp************* <%@LANGUAGE="VBSC ...

  2. PHP阿里大鱼短信验证

    PHP阿里大鱼短信验证 第一步 登陆阿里大于注册账号,在用户管理中心创建应用,确定AppKEY和App Secret还有配置签名 第二步 在应用管理中选择SDK下载,或者直接点击http://down ...

  3. 阿里云短信验证~JAVA后台

    maven :中的 pom.xml添加 <dependency> <groupId>com.aliyun</groupId> <artifactId>a ...

  4. 阿里云短信验证_基于阿里云OpenAPI实现

    阿里云短信服务 背景简介: 短信验证以及短信通知,目前已经应用的非常广泛,最近因项目需要,需要将原来的短信接口换成阿里云的的短信服务,原项目集成的短信服务能够实现短信的发送以及短信的验证整个过程,简单 ...

  5. Springboot下实现阿里云短信验证功能(含代码)

    Springboot下实现阿里云短信验证功能 一 开通阿里云短信服务 阿里云官网注册登录 找到短信服务并开通 打开短信服务的管理台 在国内消息那栏中添加签名管理和模板管理(按照格式要求去写) 在右上角 ...

  6. ThinkPHP5.0手把手实现手机阿里云短信验证

    阿里云短信服务介绍阿里云短信服务就是以前的阿里大于,不过现在融合得到阿里云平台了.首先,你需要注册一个阿里云账号,这个自行解决. 仅用于测试使用官方送的代金券够用了.相关配置1.开通阿里云Access ...

  7. 阿里云短信验证解决方案(java版)(redis存储)

    最近搞了一个互联网项目的注册,需要写一个手机号验证(由于之前没有轮子,只能自己摸索了); 1:基本思路: 1>购买了阿里云短信服务->下载阿里云短信发送demo(java版); 2> ...

  8. thinkphp5阿里大于短信接口

    function autumn_sendsms($tel,$stype){ $pd_go=true; if($tel==''){ $msg='手机号不能为空'; $pd_go=false; } if( ...

  9. .NET Core阿里大于短信发送SDK修改以及使用

    一.问题背景 继上次七牛云SDK的问题之后(参考:http://www.cnblogs.com/OMango/p/8447480.html),在发送短信的功能上又出现了问题,我们短信服务使用的是阿里大 ...

随机推荐

  1. Java --- JSP2新特性

    自从03年发布了jsp2.0之后,新增了一些额外的特性,这些特性使得动态网页设计变得更加容易.jsp2.0以后的版本统称jsp2.主要的新增特性有如下几个: 直接配置jsp属性 表达式语言(EL) 标 ...

  2. SQL零星技术点:SQL中转换money类型数值转换为字符串问题

    --SQL中转换money类型数值转换为字符串问题,直接转换就转为两位了,所以需要做一下处理.具体请看下述sql实例. 1 create table #test(price money) insert ...

  3. SourceTree 无法查看组织仓库

    error log: Pushing to remote: Repository not found. 在使用SourceTree进行版本控制,代替git命令行,而且作为免费 跨平台 功能完备的git ...

  4. Android sdk配置 常见问题及处理方法

    1. 下载sdk压缩包,解压后显示 2.双击SDK Manager.exe 程序进入如下界面 注:有的童鞋可能遇到如下问题 一般将一和二两种操作都完成就OK了 一. 更新sdk,遇到了更新下载失败问题 ...

  5. Python全栈之路-Day31

    1 反射 反射的精髓是通过字符串去获取对象属性的值 1.1 基于类和对象反射的属性 #!/usr/bin/env python # __Author__: "wanyongzhen" ...

  6. JQuery简单动画效果的发生顺序和animate方法

    (1)在同一组元素上的效果 当在一个.animate()方法中以多个属性的方式应用时,是同时发生的. 当以方法连缀的形式应用时,是按顺序发生的(排队效果)---除非queue选项值为false. (2 ...

  7. BZOJ 1266: [AHOI2006]上学路线route

    题目描述 可可和卡卡家住合肥市的东郊,每天上学他们都要转车多次才能到达市区西端的学校.直到有一天他们两人参加了学校的信息学奥林匹克竞赛小组才发现每天上学的乘车路线不一定是最优的. 可可:"很 ...

  8. 给上传文件的input控件"美容"

    作为一名前端程序猿呢,在工作中经常会遇到form表单这种东西.然而表单的其他input控件样式还是很好改变的.但是,唯独input类型是file的文件上传控件可能就没那么好打扮的漂亮.刚好菜鸟我最近工 ...

  9. java:Comparator比较器

    /*Comparator是java.util包里的一个接口,使用时应该实现导入相应的包, *再写一个实现了Comparator接口的类,并复写int compare(Object o)方法, *写出你 ...

  10. asp.net 母版-页脚制作

    1.母版创建流程略过. 2.创建母版页css:Site.css body { } .linkButton{ text-decoration:none; color:whitesmoke; } 3.母版 ...