专栏首页程序员的碎碎念php实现登录短信验证

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),作者:benny

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • π框架之实战项目(代码分享)

    通过之前的学习,本文主要介绍一下实现用户的登录、注册等功能的接口代码,让大家通过小实战来感悟phalapi框架的神奇之处。(以下代码均可右滑) ? 获取参数规则...

    benny
  • LeetCode 每日一题169: 求众数

    给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

    benny
  • 从Thinkphp5看RCUD

    基础知识 看这篇文章前,你需要理解thinkphp5的几个概念 入口文件:ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个应用都有一个...

    benny
  • Mybatis 批量插入数据 SQL

    批量插入时,xxxMapper.java 中方法的参数都必须是 List ,泛型可以是 bean ,也可以是 Map 。配合使用 mybatis 的 forea...

    一个会写诗的程序员
  • 猿实战14——前台类目之广告牌设置

    上一个章节,猿人君教会了你如何去实现前台类目,虽然已经讲得很详细了,还是有朋友认为比较困难。可能是每个人的基础真的不一样吧。

    山旮旯的胖子
  • SpringBoot 实战 (十三) | 整合 MyBatis (XML 版)

    如题,今天介绍 SpringBoot 与 Mybatis 的整合以及 Mybatis 的使用,之前介绍过了 SpringBoot 整合MyBatis 注解版的使...

    一个优秀的废人
  • 大数据时代的富士康,在图上画一个框3分钱

    这里生产你美颜时“一键瘦脸”的尖下颌,你一起学猫叫时的动态胡须,张学友演唱会被实时识别的犯人,生产未来的自动驾驶,智能门禁……

    用户1594945
  • python【第十三篇】可以写一个堡垒机了

    到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是...

    用户1432189
  • python list 参数传递方式

    上面方法的定义方式跟下面是一样的,相当于是参数引用的是一个全局变量,所以它的值一直在累加

    py3study
  • 该不该扼杀过多的if-else

    抛开其他因素,如果if-else过多,可读性也许会好也可能会降低,可维护性也是或高或低;如果if-else少,代码高度抽象,可读性会低或者不变,可维护性可能会高...

    lhyt

扫码关注云+社区

领取腾讯云代金券