小伙伴是否做PC网站的时候,是否遇到过注册用户需要使用短信验证的功能呢?或者找回密码,以及验证用户的信息等等功能!今天思梦PHP就为大家带来ThinkPHP整合阿里大鱼短信验证的功能!

首先,我们要明白短信发送是什么原理,其实我们使用的第三方是一个通讯的短信协议,然后把我们随机生成的一个验证码发送到用户的手机上,之后我们发送的同时在数据库里面要保存相应的信息用来验证,原理就是这样的了,下来我们就开始一步一步的教大家去玩这个功能!

(1)我们要去建一个保存短信消息的数据表

DROP TABLE IF EXISTS `tb_record`;

CREATE TABLE `tb_record` ( `id` int(11) NOT NULL AUTO_INCREMENT, `tel` varchar(255) NOT NULL COMMENT '手机号', `vc` varchar(255) NOT NULL, `time` varchar(255) NOT NULL, `ctime` varchar(255) NOT NULL COMMENT '最后一次发送验证码的时间', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='短信发送记录表';

(2)我们要去使用第三方的类文件,当然这个类文件你可以去平台下载,上面有PHP的demo,然后我们整合到thinkphp里面就行了,加入放在类库里面不要忘记声明命名空间!

(3)我们在配置文件里面配置一些辅助变量

'url'=>'http://www.etuocloud.com/gatetest.action', //这个是测试的调用地址,上限之后要更改'app_key'=>'XXXXXXXXXX', // key,你申请之后创建应用会得到'app_secret'=>'XXXXXXXXXXXX', // 密匙,你申请之后创建应用会得到'format'=>'json', // 返回值的格式,分为XML和json

(4)这步就是我们开始写逻辑操作了

$_POST['tel'] = "18522713XXX";$tel = $_POST['tel'];$w['tel'] = $tel;$res1 = D("Record")->where($w)->find();//一天之内只能有三次机会(验证)$gap = time()-$res1['ctime'];if($gap>=86400){ $data['time'] = 0; D("Record")->where($w)->save($data);}$res1 = D("Record")->where($w)->find();if($res1['time']>=3){ echo "短信上限!";}else { //随机发送的验证码的值 $num = rand(1000, 9999); //实例化一个对象 $ecd = new Ecd(C('url'), C('app_key'), C('app_secret'), C('format')); //发送验证码短信 //第一个参数是手机号,第二个是模板的id,在应用管理有 一个模板的管理,第三个就是我们发送的随机的验证码,第 四个是订单号,咟䦕不填 $res = $ecd->send_sms_code("$tel", '1', "$num", ''); $arr = json_decode($res, true); if ($arr['result'] == 0 && $arr['msg'] == "成功") { $w['tel'] = $tel; $res1 = D("Record")->where($w)->find(); if ($res1) { $data['vc'] = $num; $data['time'] = $res1['time'] + 1; $data['ctime'] = time(); $res2 = D("Record")->where($w)->save($data); if ($res2) { echo "发送成功"; } else { echo "发送失败"; } } else { $data['tel'] = $tel; $data['vc'] = $num; $data['time'] = 1; $data['ctime'] = time(); $res3 = D("Record")->add($data); if ($res3) { echo "发送成功"; } else { echo "发送失败"; } } }}

(5)那就是收到短信,然后用户提交的时候我们根据用户的手机号去查相关的验证码好了!

$_POST['tel'] = "18522713XXX";

$tel = $_POST['tel'];$w['tel'] = $tel;

$res1 = D("Record")->where($w)->find();//一天之内只能有三次机会(验证)

$gap = time()-$res1['ctime'];

if($gap>=86400){

$data['time'] = 0;

D("Record")->where($w)->save($data);

}

$res1 = D("Record")->where($w)->find();

if($res1['time']>=3){

echo "短信上限!";

}else {

//随机发送的验证码的值 $num = rand(1000, 9999);

//实例化一个对象

$ecd = new Ecd(C('url'), C('app_key'), C('app_secret'), C('format'));

//发送验证码短信 //第一个参数是手机号,第二个是模板的id,在应用管理有 一个模板的管理,第三个就是我们发送的随机的验证码,第 四个是订单号,咟䦕不填

$res = $ecd->send_sms_code("$tel", '1', "$num", '');

$arr = json_decode($res, true);

if ($arr['result'] == 0 && $arr['msg'] == "成功") {

$w['tel'] = $tel;

$res1 = D("Record")->where($w)->find();

if ($res1) { $data['vc'] = $num;

$data['time'] = $res1['time'] + 1;

$data['ctime'] = time();

$res2 = D("Record")->where($w)->save($data);

if ($res2) {

echo "发送成功";

} else { echo "发送失败";

}

} else { $data['tel'] = $tel;

$data['vc'] = $num;

$data['time'] = 1;

$data['ctime'] = time();

$res3 = D("Record")->add($data);

if ($res3) { echo "发送成功";

} else {

echo "发送失败";

} } }}

还有就是小伙伴要注意的就是,阿里大鱼未认证的用户,只能给白名单的用户发送短信,所以你要去配置一下白名单,以保证我们发送的成功!还有就是刚申请的时候是有免费的100条使用的条数的,供我们测试使用!

思梦PHP-阿里大鱼手机验证码的更多相关文章

  1. 阿里大鱼短信接口整合Tp3.2.3开发整理

    阿里大鱼 http://www.alidayu.com/ 的短信接口总体是不错的,别安驹个人认为不管是从性价比还是稳定性上都是跟同类的短信接口好些,毕竟是大公司的东西不会差到哪去.下面把之前开发的短信 ...

  2. Tihinkphp3.2整合最新版阿里大鱼进行短信验证码发送

    阿里大鱼最新下载地址:阿里大鱼SDK下载 或者从官网进行下载:阿里大鱼SDK官网下载 下载完成后,将压缩包内的api_sdk文件夹放到ThinkPHP\Library\Vendor目录下,修改文件名为 ...

  3. PHP使用阿里大鱼发送短信验证

    目前,基本上所有的网站注册都要求手机绑定,并通过下发短信验证码方式验证手机的真实性,提高了用户的真实性.但是一般企业单独申请短信行业通道都比较困难,因此选择一家信誉好,稳定性.及时性强的第三方短信通道 ...

  4. 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo

    Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...

  5. 功能:使用QQ号登陆,并加上微信和短信提醒,是否增量备份可选,阿里大鱼短信发送开发与测试,聚合数据(用JSON发短信,比较清楚)

    微博就可以,所以其它软件也可以http://desktop.weibo.com/ http://blog.csdn.net/jueblog/article/details/14497181http:/ ...

  6. asp.net C# 实现阿里大鱼和云片网短信接口类

    云片网短信通用类 public class YunpianSMS { public YunpianSMS() { } /// <summary> /// 服务器HTTP地址 /// < ...

  7. 阿里大鱼短信发送 FOR DT

    //增加了参数$action 来标志发送的是什么短信 注册短信 验证码短信 提示短信等 function send_sms($mobile, $message, $word = 0, $time = ...

  8. PHP阿里大鱼短信验证

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

  9. SpringBoot、ActiveMQ整合阿里大鱼-----短信服务

    3.短信微服务 3.1需求分析 构建一个通用的短信发送服务(独立于优乐选的单独工程),接收activeMQ的消息(MAP类型)  消息包括手机号(mobile).短信模板号(template_code ...

随机推荐

  1. Java学习过程中的收获

    1. String <--> Date 这种转换要用到java.text.SimpleDateFormat类 字符串转换成日期类型: 方法1: 也是最简单的方法 Date date=new ...

  2. react搭建一个框架(react-redux-axios-antd Designs)

    废话不多说,先给一个github案例:前往.. 1.create-react-app <文件名> 安装router:npm  i react-router-dom -S; npm inst ...

  3. easyui基于 layui.laydate日期扩展组件

    本人后端开发码农一个,公司前端忙的一逼,项目使用的是easyui组件,其自带的datebox组件使用起来非常不爽,主要表现在 1.自定义显示格式很麻烦 2.选择年份和月份用户体验也不好 网上有关于和M ...

  4. UOJ#179. 线性规划(线性规划)

    描述 提交 自定义测试 这是一道模板题. (这个题现在标程挂了..哪位哥哥愿意提供一下靠谱的标程呀?) 本题中你需要求解一个标准型线性规划: 有 nn 个实数变量 x1,x2,…,xnx1,x2,…, ...

  5. MySQL自增锁等待问题解决

    有网友再群里问:在做基准测试时候,批量插入数据时,有很多自增锁等待,我告诉他解决办法: 1.innodb_autoinc_lock_mode=2 2.innodb_autoextend_increme ...

  6. maven 使用错误

    使用mvn test mvn test -Dtest=测试包名.测试类名时 [ERROR] Failed to execute goal org.apache.maven.plugins:maven- ...

  7. Jenkins持续化集成

    Jenkins介绍 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作. 安装环境 操作系统:lin ...

  8. #Python编程从入门到实践#第四章笔记

    #Python编程从入门到实践#第四章笔记   操作列表 ​​​1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...

  9. 使用python写一个最基本的mapreduce程序

    一个mapreduce程序大致分成三个部分,第一部分是mapper文件,第二个就是reducer文件,第三部分就是使用hadoop command 执行程序. 在这个过程中,困惑我最久的一个问题就是在 ...

  10. kivy学习一:安装kivy模块

    现在是看脸的时代,一个程序没有一个漂亮的UI,就像一个深闺中的美女没人欣赏. 当然作为一个小小.............白,没有那么高的要求,当前要先有脸是不? 首选python自家的模块tkinte ...