思梦PHP-阿里大鱼手机验证码
小伙伴是否做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-阿里大鱼手机验证码的更多相关文章
- 阿里大鱼短信接口整合Tp3.2.3开发整理
阿里大鱼 http://www.alidayu.com/ 的短信接口总体是不错的,别安驹个人认为不管是从性价比还是稳定性上都是跟同类的短信接口好些,毕竟是大公司的东西不会差到哪去.下面把之前开发的短信 ...
- Tihinkphp3.2整合最新版阿里大鱼进行短信验证码发送
阿里大鱼最新下载地址:阿里大鱼SDK下载 或者从官网进行下载:阿里大鱼SDK官网下载 下载完成后,将压缩包内的api_sdk文件夹放到ThinkPHP\Library\Vendor目录下,修改文件名为 ...
- PHP使用阿里大鱼发送短信验证
目前,基本上所有的网站注册都要求手机绑定,并通过下发短信验证码方式验证手机的真实性,提高了用户的真实性.但是一般企业单独申请短信行业通道都比较困难,因此选择一家信誉好,稳定性.及时性强的第三方短信通道 ...
- 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo
Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...
- 功能:使用QQ号登陆,并加上微信和短信提醒,是否增量备份可选,阿里大鱼短信发送开发与测试,聚合数据(用JSON发短信,比较清楚)
微博就可以,所以其它软件也可以http://desktop.weibo.com/ http://blog.csdn.net/jueblog/article/details/14497181http:/ ...
- asp.net C# 实现阿里大鱼和云片网短信接口类
云片网短信通用类 public class YunpianSMS { public YunpianSMS() { } /// <summary> /// 服务器HTTP地址 /// < ...
- 阿里大鱼短信发送 FOR DT
//增加了参数$action 来标志发送的是什么短信 注册短信 验证码短信 提示短信等 function send_sms($mobile, $message, $word = 0, $time = ...
- PHP阿里大鱼短信验证
PHP阿里大鱼短信验证 第一步 登陆阿里大于注册账号,在用户管理中心创建应用,确定AppKEY和App Secret还有配置签名 第二步 在应用管理中选择SDK下载,或者直接点击http://down ...
- SpringBoot、ActiveMQ整合阿里大鱼-----短信服务
3.短信微服务 3.1需求分析 构建一个通用的短信发送服务(独立于优乐选的单独工程),接收activeMQ的消息(MAP类型) 消息包括手机号(mobile).短信模板号(template_code ...
随机推荐
- Java 单词 day seven
Constructor Constructor Constructor Constructor Constructor Constructor Constructor Constructor Cons ...
- 基于Ceph分布式集群实现docker跨主机共享数据卷
上篇文章介绍了如何使用docker部署Ceph分布式存储集群,本篇在此基础之上,介绍如何基于Ceph分布式存储集群实现docker跨主机共享数据卷. 1.环境准备 在原来的环境基础之上,新增一台cen ...
- CentOS 系统 Docker 的命令大全
本文记录 CentOS 系统 Docker 的命令大全 命令 docker ps 显示运行中的容器 docker ps -a 显示所有容器 docker start 容器名称 启动容器 docker ...
- datatable常用设置
bSort: false, // 是否排序功能 bFilter: false, // 过滤功能 bPaginate: true, // 翻页功能 bInfo: true, // 页脚信息 bProce ...
- 通过Samba实现Linux与Windows间的文件共享
Samba Samba,是用来让Linux系列的操作系统与Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网 ...
- springMVC集成logback日志系统
一.项目结构 项目介绍:maven搭建的web项目,实现Java日志记录功能.其中logback.xml为日志配置文件,spring-mvc-servlet.xml为spring controller ...
- 面试题 LazyMan 的Rxjs实现方式
前言 笔者昨天在做某公司的线上笔试题的时候遇到了最后一道关于如何实现LazyMan的试题,题目如下 实现一个LazyMan,可以按照以下方式调用:LazyMan("Hank")输出 ...
- nodejs的http-server--web前端福利
很多web前端在日常开发的时候可能会想常开发是谁. 不好意思,说错了. 很多web前端在日常开发的时候总是避免不了让所写页面在服务器环境下执行. 比如当你在用angularjs的route模块等等等. ...
- 控制器方法重复命名导致nginx 504的问题
由于控制器方法重复命名重启swoole后运行代码导致 504 Gateway Time-out ,查看laravel日志和nginx日志才找原因所在,以后还是要多看错误日志.
- redis学习1(nosql)
一. 互联网时代背景下大机遇,为什么用nosql 1.单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付.在那个时候,更多的都是静态网页,动态交互类型的网站 ...