思梦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 ...
随机推荐
- background-position设置
设置背景图片的位置:background-position:x y; 其中x和y可以为百分比也可以为像素
- 微信小程序清除默认样式
1.清除button的默认样式 button::after{border:none;}input{outline:none;border:none;list-style: none;}
- JavaScript模拟Form提交
在一个系统跳转到另外一个系统中时,可以用WAS的全局安全性,也可以用共享session做单点登陆,这次接触到了js模拟form提交的方式. function loginOAForm(url) { va ...
- Django 入门案例开发
Django是一个重量级的web开发框架,它提供了很多内部已开发好的插件供我们使用:这里不去描述 Django直接进入开发过程. Django入门案例分两部分:一.开发环境的配置:二.业务需求分析. ...
- Spring Boot Shiro权限管理--自定义 FormAuthenticationFilter验证码整合
思路shiro使用FormAuthenticationFilter进行表单认证,验证校验的功能应该加在FormAuthenticationFilter中,在认证之前进行验证码校验. 需要写FormAu ...
- java经常看见 jdk5 jdk1.5 —— jdk6 jdk1.6 这两者有什么区别吗?
问.java经常看见 jdk5 jdk1.5 —— jdk6 jdk1.6 这两者有什么区别吗? 答:没有区别,jdk5 和 jdk1.5 所代表的意思是一样的,只是叫法不一样 关键字: jdk5 j ...
- C++ 基础 初始化列表
当一个类组合了其他类,或者使用了 const 成员,就要用 初始化列表. Class A {...}; Class B {...}; Class C { private: A a; B b; int ...
- SVN 的基本用法
克隆远程库 # svn checkout $URL --username=$userName 显示库信息 # svn info 显示库状态 # svn status 将文件纳入版本管理 # svn a ...
- EF实体部分更新的问题
之前遇到只更新部分的问题:如前端修改用户信息(不修改密码),传实体到后台,这个实体是没有密码,这样一来要更新的话,得先去数据库通过传过来的实体的ID读取这条记录,然后将改动的部分填到查出来的记录中,再 ...
- Android面试收集录 Android布局
1.请说出Android中的五种布局,并介绍作用? FrameLayout(堆栈布局),层叠方式显示,类似于PhotoShop上的层叠图层. LinearLayout(线性布局),将视图以水平或者垂直 ...