思梦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)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏瞎说开发那些事

linux下利用一次性口令实现 安全管理

2046
来自专栏Golang语言社区

Go代码打通HTTPs

TL;DR 手工创建CA证书链,手写代码打通HTTPs的两端 HTTPs最近是一个重要的话题,同时也是一个有点难懂的话题。所以网上有大量的HTTPs/TLS/S...

3664
来自专栏蓝天

Ssh,scp自动登陆方法

Ssh,scp自动登陆方法 ########################### A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机...

933
来自专栏Python自动化测试

Postman插件的应用与实战(二)

在postman插件的应用与实战(一)中,介绍了postman插件的安装,使用,collestion的创建以及应用,本小节中,我们来介绍postman结合new...

975
来自专栏闻道于事

前后端分离之JWT用户认证(转)

在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个requ...

1681
来自专栏极客生活

Mac下iTerm2 免密码登录

iTerm2 本身并没有提供这个功能,不过可以借助第三方工具sshpass来实现。

903
来自专栏木制robot技术杂谈

Ubuntu 架设 OpenVPN 实现内网穿透

家里的网络因为没有公网 IP,有时候想要连接到家里的树莓派或者电脑就无法实现。这个时候可以采用内网穿透的方法远程连接家中的机器,内网穿透的方案有很多,下面介绍一...

2.3K3
来自专栏lestat's blog

certbot+letsencrypt配置免费单证书多域名ssl证书

前些天看到微信公众平台官方公告关于公众平台接口不再支持HTTP方式调用的公告之后决定把项目的协议从http改成https,于是开始在网上查,完成之后总结了一点经...

5934
来自专栏技术之路

关闭Outlook时最小化 dll

用Outlook时最让我感觉不爽的就是不小心点了关闭按钮就会把Outlook关闭。 我们用软件的时候都希望软件有一个关闭时最小化功能,更希望Outlook也有这...

1935
来自专栏FreeBuf

linux下利用一次性口令实现安全管理

作者 黑狐 [译自vpsboard] Linux服务器一直就是以稳定、高效、安全而著称。安全是比较重要的一个环节,这关系到商业机密,更关系到企业的存亡。本文...

2347

扫码关注云+社区