PHP实现阿里大鱼短信验证的实例代码


Posted in PHP onJuly 10, 2017

最近想实现PHP实现短信验证的效果,做PC网站的时候,可以通过注册用户需要使用短信验证的功能,或者找回密码,以及验证用户的信息等等功能,发现了阿里大鱼。留个笔记

第一步

登陆阿里大于注册账号,在用户管理中心创建应用,确定AppKEY和App Secret还有配置签名

PHP实现阿里大鱼短信验证的实例代码

PHP实现阿里大鱼短信验证的实例代码

第二步

在应用管理中选择SDK下载,或者直接点击https://3water.com/softs/312325.html下载,免费的哦亲

把下载好的资源解压放到ThinkPHP\Library\Vendor目录下如图

PHP实现阿里大鱼短信验证的实例代码PHP实现阿里大鱼短信验证的实例代码

并不是所有的php文件都需要,就用如图所示Alidayu文件夹下那几个php文件,把Alidayu里面的php文件分别打开,在开始的一行添加代码(如果你下载的来自我发的链接,那就没必要添加这个代码了,因为我添加过了)

namespace Vendor\Alidayu;

目的是为了在调用的时候不至于引入失败

第三步

可以写HTML了

<div class="form-group">
 <div class="field field-icon-right">
  <input type="text" id="admin" class="input" name="admin" placeholder="用户名" data-validate="required:请填写用户名,length#>=5:用户长度不符合要求" />
  <span class="icon icon-user"></span>
 </div>
</div>
<div class="form-group">
 <div class="field field-icon-right">
  <input id="mobile" type="tel" class="input" name="mobile" placeholder="手机号码" onblur="checkmobile(this)" />
  <span class="icon icon-mobile"></span>
 </div>
</div>
<button id="sendmsg">获取验证码</button>

第四步

写入JQ代码(功能是,发送验证码后倒计时,并且POST传递后台,后台返回的数据0,1,2分别对应不同的功能)这段代码是参考别人的

<script >

 /*-------------------------------------------*/
 var InterValObj; //timer变量,控制时间
 var count = 60; //间隔函数,1秒执行
 var curCount;//当前剩余秒数
 var code = ""; //验证码
 var codeLength = 6;//验证码长度

 $(function () {
  $('#sendmsg').click(function () {
   $.ajax({
    type: "POST",
    url: "/User/folder/child/obtainyzm",
    data: "admin=" + $('#admin').val()+"&mobile="+$("#mobile").val() ,
    success: function (result) {
     if(result==0){
      curCount = count;
      //设置button效果,开始计时
      $("#sendmsg").css("background-color", "LightSkyBlue");
      $("#sendmsg").attr("disabled", "true");
      $("#sendmsg").val("获取" + curCount + "秒");
      InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次
      // alert("验证码发送成功,请查收!");
     }
     if(result==1){

      alert("用户名和手机号不匹配!");
     }
     if(result==2){

      alert("用户名不存在!");
     }

    },
    dataType: 'json'

   })
  })
 })

 function SetRemainTime() {

  if (curCount == 0) {
   window.clearInterval(InterValObj);//停止计时器
   $("#sendmsg").removeAttr("disabled");//启用按钮
   $("#sendmsg").css("background-color", "");
   $("#sendmsg").val("重发验证码");
   code = ""; //清除验证码。如果不清除,过时间后,输入收到的验证码依然有效
  }
  else {
   curCount--;
   $("#sendmsg").val("获取" + curCount + "秒");
  }
 }
</script>

上面有两个参数admin和mobile分别代表用户名和手机号码。

第五步

写入功能代码

public function obtainyzm(){

 $mobile = $_POST['mobile'];//获取手机号码
 $admin =$_POST['admin'];//获取用户名

 $user = M('db_admin')->where(array('admin'=>$admin))->find();

 /************引入*************/
 Vendor('Alidayu.TopClient');
 Vendor('Alidayu.AlibabaAliqinFcSmsNumSendRequest');
 Vendor('Alidayu.ResultSet');
 Vendor('Alidayu.RequestCheckUtil');

 $c = new \Vendor\Alidayu\TopClient;
 $req = new \Vendor\Alidayu\AlibabaAliqinFcSmsNumSendRequest;

 /*************配置***************/
 $code = randCode(4);//随机验证码
 $c->appkey = '23******';
 $c->secretKey = '6f73a******************';
 $req->setSmsType("normal");
 $req->setSmsFreeSignName("xx的测试");
 $req->setSmsParam("{code:'$code'}");
 $req->setRecNum("$mobile");
 $req->setSmsTemplateCode("SMS_3******");

 if($user)
 {
  if($user['mobile'] == $mobile)
  {
   /*************发送验证码短信,并把验证码作为新密码保存到服务器上***************/
   //$c->execute($req); //不要开启,开启后就会有短信到账,一次几分钱..在服务器上看新密码就好
   $newpwd['pwd'] = md5($code);
   D('db_admin')->where(array('admin'=>$user['admin']))->save($newpwd);
   $this->ajaxreturn(0);//用户名密码匹配
  }
  else
  {
   $this->ajaxreturn(1);//用户名和手机号不匹配
  }
 }
 else
 {
  $this->ajaxreturn(2); //用户名不存在
 }
 $this->display();
}//获取验证码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
BBS(php &amp; mysql)完整版(二)
Oct 09 PHP
PHP伪造referer实例代码
Sep 20 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
Aug 16 PHP
PHP Curl多线程原理实例详解
Nov 06 PHP
phpQuery占用内存过多的处理方法
Nov 13 PHP
PHP字符串的连接的简单实例
Dec 30 PHP
php实现paypal 授权登录
May 28 PHP
php中使用GD库做验证码
Mar 31 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
Oct 11 PHP
tp5.1 框架路由操作-URL生成实例分析
May 26 PHP
one.php 多项目、函数库、类库 统一为一个版本的方法
Aug 24 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
Oct 20 PHP
yii2局部关闭(开启)csrf的验证的实例代码
Jul 10 #PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
Jul 10 #PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
Jul 10 #PHP
PHP正则匹配操作简单示例【preg_match_all应用】
Jul 10 #PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
Jul 10 #PHP
form自动提交实例讲解
Jul 10 #PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 #PHP
You might like
提升PHP执行速度全攻略(下)
2006/10/09 PHP
编写自己的php扩展函数
2006/10/09 PHP
加速XP搜索功能堪比vista
2007/03/22 PHP
php与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
php Smarty 字符比较代码
2011/02/27 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
2014/05/15 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
2017/04/01 PHP
下载网站打开页面后间隔多少时间才显示下载链接地址的代码
2010/04/25 Javascript
jquery操作select option 的代码小结
2011/06/21 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
使用js修改客户端注册表的方法
2013/08/09 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
2014/12/17 Javascript
JavaScript数组前面插入元素的方法
2015/04/06 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
Vue时间轴 vue-light-timeline的用法说明
2020/10/29 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
2020/11/02 Javascript
ES5和ES6中类的区别总结
2020/12/21 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
python网络编程之文件下载实例分析
2015/05/20 Python
浅析Python数据处理
2018/05/02 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
HOTEL INFO英国:搜索全球酒店
2019/08/08 全球购物
大学旷课检讨书
2014/01/28 职场文书
优秀党员获奖感言
2014/02/18 职场文书
元旦获奖感言
2014/03/08 职场文书
社会实践活动总结范文
2014/07/03 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
《自己去吧》教学反思
2016/02/16 职场文书