php实现登录短信验证

今天benny要跟大家说这个其实很简单,就是借用某一个平台的短信api接口实现短信验证,说简单呢,那是因为他的官网:http://www.ucpaas.com上有开发文档,它可以教会一个小白很快的运用它的接口,并开发自己的应用。这个官网还算人性化的,因为你一注册,就给了你10块钱的测试费用来尝试使用它的api,你要知道一条短信0.055元,10块钱给你拿来学习测试已经够多啦!

首先,你进入官网,注册,然后你就点击开发文档:

这里有详细的介绍你怎么用它的东西,我就不在这里bb啦,看完后我们就直接下载一个php的demo文件来试试!!

下载后,你就可以看到一个封装的类Ucpaas.class.php和一个index.php的文件:

上面的注释有详细的解释,要用到的参数啥的,你注册了账号后也就自然有了,多看几遍,有点基础的人几分钟内就可以看得懂的啦!

接着,你就开始阅读官网下面目录的内容:

这里有详细的介绍,我就只是做一个引导吧,具体的大家去阅读哦。

最后,我把这个短信验证功能在我的项目上实现了,你可以看下我的代码截图:

<?php
//载入ucpass类
require('library/Db.class.php');
require_once('library/Ucpaas.class.php');
//初始化必填
$options['accountsid']='******';(这个不能给大家看哦)
$options['token']='******';(这个不能给大家看哦)
//初始化 $options必填
$ucpass = new Ucpaas($options);
//开发者账号信息查询默认为json或xml
header("Content-Type:text/html;charset=utf-8");
//短信验证码(模板短信),默认以65个汉字(同65个英文)为一条(可容纳字数受您应用名称占用字符影响),超过长度短信平台将会自动分割为多条发送。分割后的多条短信将按照具体占用条数计费。
// 验证码短信:同一个手机号1分钟内不能超过2条,24小时内不能超过8条
$appId = "****";(这个不能给大家看哦)
$to=$_POST['to'];
$templateId = "244286";
$string='';
for ($i=0; $i <4 ; $i++) { 
 $string.=rand(0,9);
}
$param=$string;
$db = new DB();
$sql ="select * from mr_user where username = :username";
$user = $db->row($sql,array('username' =>$to));
//用户名存在
$id=$user['id'];
if ($user){
    $password=md5($param);
    $update_sql = "update mr_user set password ='$password' where id='$id'";
    $result_id = $db->query($update_sql);
    if ($result_id){
        $data=$ucpass->templateSMS($appId,$to,$templateId,$param);
        $re='';
        $arr = json_decode($data,true);
        foreach ($arr as $key => $value) {
            if ($key=='resp') {
               foreach ($value as $key2 => $value2) {
                   if ($key2=='respCode') {
                       $re=$value2;
                   }
               }
            }
        }
        if ($re=='000000') {
            echo 1;//短信已发送!
        }elseif ($re=='105147') {
            echo 3;//短信发送太频繁
        }else{
            echo 2;//号码输入有误
        }
        exit(0);
    }
    else{
        echo 0;//短信发送出错!
    }
}else {
    $data=$ucpass->templateSMS($appId,$to,$templateId,$param);
    $re='';
    $arr = json_decode($data,true);
    foreach ($arr as $key => $value) {
        if ($key=='resp') {
           foreach ($value as $key2 => $value2) {
               if ($key2=='respCode') {
                   $re=$value2;
               }
           }
        }
    }
    if ($re=='000000') {
        $addtime = time();
        $insert_sql = "insert into mr_user(username,password,addtime) value(:username,:password,$addtime)";
        $result_id = $db->query($insert_sql,array('username' =>$to,'password'=>md5($param)));
        if ($result_id){
            echo 1;//短信已发送!
        }else{
            echo 0;//短信发送出错!
        }
    }elseif($re='105147'){
        echo 3;//短信发送太频繁
    }else{
        echo 2;//号码输入有误
    }
}

原文发布于微信公众号 - 程序员的碎碎念(gh_53e607dd4782)

原文发表时间:2017-12-18

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏BestSDK

3秒钟,用python破解加密PDF|附工具地址

文中将介绍如果利用开源工具、python代码等秒破加密的pdf文件。 ? 过程分析 因为pdf文件加密的密码是随机的,而且密码不长。首先,我们需要指导pdf的加...

7025
来自专栏静晴轩

Http和Https的区别

今天大家一起聚于会议室听一个同事的分享,中途需要联网的时候,网络状态良好竟不能访问该网址,那些年也是接触过网络的我看了下懵了,旁边一大牛瞬间即解决了(将地址前的...

3534
来自专栏尾尾部落

让网站成为 HTTPS 安全站点

之前用过阿里云的 SSL 免费证书,但是期限只有一年,昨天过期了,看了其他收费的 SSL 证书,还是很贵的,在读小硕实在买不起,只能找找免费的 SSL 证书了。

1821
来自专栏魏艾斯博客www.vpsss.net

补充记录腾讯云 DNSPod 域名 API 申请 Let’s Encrypt 泛域名 SSL 证书需要注意的几点

刚写完了腾讯云 DNSPod 域名 API 申请 Let’s Encrypt 泛域名 SSL 证书这篇教程,感觉中间有几点是新手需要注意的,申请 SSL 泛域名...

5324
来自专栏Java技术栈

JSON Web Token (JWT),服务端信息传输安全解决方案。

JWT介绍 JSON Web Token(JWT)是一种开放标准(RFC 7519),它定义了一种紧凑独立的基于JSON对象在各方之间安全地传输信息的方式。这些...

41510
来自专栏FreeBuf

任意密码重置的一个场景

背景 做授权渗透的时候要求要写明文传输漏洞,这就导致很多没有上 HTTPS 的网站为了修这个明文传输的问题,用尽了各种奇葩的做法,其中见得比较多的就是使用 RS...

3636
来自专栏醉梦轩

NGINX部署HTTPS

nginx是一款高性能的Web服务器,可以用作反向代理和负载均衡。随着HTTPS的不断推进,越来越多的网站都开始转到HTTPS方式,HTTP仅仅作为重定向到HT...

2663
来自专栏腾讯云API

腾讯云 API 最佳实践:保护你的密钥

使用腾讯云 API 时,你需要用密钥来签名你的 API 请求。腾讯云接收到你的请求后,会比对你的签名串和实际请求参数。

8.6K11
来自专栏派森公园

cookie和token

4095
来自专栏醉梦轩

NGINX部署HTTPS

7024

扫码关注云+社区