专栏首页PHP实战技术思梦PHP-阿里大鱼手机验证码

思梦PHP-阿里大鱼手机验证码

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

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

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

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

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

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

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

本文分享自微信公众号 - 思梦PHP(sm_php),作者:思梦PHP讲师刘柱

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-10-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微信企业付款到个人钱包引发的坑之反思~!

    企业付款到个人钱包也就是用户在微信公众平台提现可以直接打入提现者微信的钱包!但要满足: 1)企业开通微信支付90天 2)连续30天有交易才能开通此功能 ? 今...

    思梦php
  • 解构赋值,你不能不懂!

    相信大家不难从上述的几段代码案例总结出来解构赋值的规律,我总结到如下几点: 1、解构主体为数组或者对象。 2、解构源必须具备Iterator接口或者经过转换之后...

    思梦php
  • 解构赋值,你不能不懂!

    思梦php
  • 如何将UI5应用部署到Fiori On-Premise和On-Cloud的Launchpad上去

    具体步骤参考我的博客: 如何将BSP应用配置成Fiori Launchpad上的一个tile

    Jerry Wang
  • 如何将ST05生成的trace导入HANA Studio里并以图形化方式显示出来

    有的朋友可能在ST05里看到这个按钮但是不知道如何使用。

    Jerry Wang
  • Android流媒体开发之路三:基于NDK开发Android平台RTSP播放器

    本人的交叉编译平台是ubuntu 64bit,编译成动态库,然后让APP通过JNI来调用,跟其他程序的编译方式差不多。当然,首先需要系统内布置好NDK编译环境。...

    hbstream
  • Smarting:第一款真正意义上的便携式可移动脑电设备

    目前市面上有很多脑电设备都号称是便携式可移动的,但是笔者认为,今天我要介绍的Smarting这款脑电设备才是第一款真正意义上的便携式可移动EEG设备。为什么这样...

    悦影科技
  • 96-可重用的TCP服务器

    在95-socket基础:TCP服务器流程中,TCP服务器只能一个客户端连接,客户端也只能发送一条消息。本例允许客户端发送多条消息,输入end结束。客户端退出后...

    凯茜的老爸
  • 零基础使用Django2.0.1打造在线教育网站(十一):登录页面实现

    努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

    编程思录
  • Day8面向对象编程1/2

    关于以下程序的笔记: Python函数式编程2/3 def count(): fs = [] for i in range(1,4): ...

    林清猫耳

扫码关注云+社区

领取腾讯云代金券