当前位置:首页 > 技术教程 > 脚本编程 > 正文内容

php原生代码实现短信验证码注册业务,流程详解附demo

atao4年前 (2020-10-04)脚本编程2797

业务流程:

  1. 用户在前端输入手机号后发送验证码请求,并发送到php处理页。

  2. php处理页收到手机号,生成验证码并调用短信平台。

  3. 短信平台采用API对接,并发送验证码

  4. 用户收到验证码,并提交注册

  5. php处理页收到验证码并校验验证码是否正确。

  6. 验证码正确,注册完成/否则注册失败

整体思路是比较简单的,而且比较适合入门不久的程序猿参考,看这不会像百度上其他的那些代码写的乱七八糟的。一共两个文件,一个html表单页面另一个是PHP的处理页面,纯学习项目 如果有线上需求请重新整理代码。下面开始上代码,一看就懂了。

注意:demo里没有加手机号的正则验证!!

image.png

根目录

-user

    -reg.html

-include

    -active.php

reg.html页面(需要引入jq库)

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <title>Document</title>
</head>
<body>
    手机号:<input type="text" name="tel" id="tel"><button type="button" id="HQ">获取验证码</button><br>
    验证码:<input type="text" name="code" id="code"><br>
    <button ID="TiJiao">提交注册</button>
<script>
    $("#HQ").click(function () {
        var tel = $("#tel").val();
        $.post("../include/active.php",{act:'UserLoginCode',tel:tel},function (data) {
        })
    });
    $("#TiJiao").click(function () {
        var tel = $("#tel").val();
        var code = $("#code").val();
        if(tel=='' || code==''){
            alert("手机号和验证码不能为空!");
        }else{
            $.post("../include/active.php",{act:'UserLogin',tel:tel,code:code},function (data) {
                if(data==1){
                    alert("验证成功");
                }else if(data==2){
                    alert("验证码错误");
                }else if(data==3){
                    alert("验证码已失效");
                }else{
                    alert("网络波动");
                }
            })
        }
    })
</script>
</body>
</html>

active.php页面,短信验证码基于阿里云平台API,点击这里跳转

<?php
session_start();
$act = isset($_POST['act'])?$_POST['act']:'';
if($act=='UserLoginCode'){
    $tel = isset($_POST['tel'])?$_POST['tel']:''; //接收到reg页传来的手机号
    $code = mt_rand(000000,999999); //生成一个6位的验证码
    $_SESSION['code'] = $code; //把验证码存进session中
    $_SESSION['time'] = time()+180; //验证码有效期为3分钟
    //短信验证码开始,以下代码为官方demo,来自阿里云
    $host = "https://smssend.shumaidata.com";
    $path = "/sms/send";
    $method = "POST";
    $appcode = "阿里云的appcode码";
    $headers = array();
    array_push($headers, "Authorization:APPCODE " . $appcode);
    $querys = "receive={$tel}&tag={$code}&templateId=M09DD535F4";
    $bodys = "";
    $url = $host . $path . "?" . $querys;
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_FAILONERROR, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    //设定返回信息中是否包含响应信息头,启用时会将头文件的信息作为数据流输出,true 表示输出信息头, false表示不输出信息头
    //如果需要将字符串转成json,请将 CURLOPT_HEADER 设置成 false
    curl_setopt($curl, CURLOPT_HEADER, true);
    if (1 == strpos("$".$host, "https://"))
    {
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    }
}
if($act=='UserLogin'){
    if($_SESSION['time'] >=  time()){ //判断验证码的时间是都大于当前时间
        $code =  isset($_POST['code'])?$_POST['code']:''; //接到reg页面传来的验证码
        if($code == $_SESSION['code']){ //验证码进行比对
            echo 1; //验证成功
        }else{
            echo 2; //验证码错误
        }
    }else{ //验证码的时间大于当前时间,代表失效了
        unset($_SESSION['code']);
        echo 3; //验证码失效了
    }
}



扫描二维码推送至手机访问。

版权声明:本文由武景涛的博客发布,如需转载请注明出处。

本文链接:http://yizhanhongtu.cn/post/18.html

分享给朋友:

相关文章

PHP微信开发-接口配置信息,入口文件Token配置失败解决办法

PHP微信开发-接口配置信息,入口文件Token配置失败解决办法

微信接口配置需要用到https开头的域名,然后将路径填写正确 如下下面是index.php代码://设置接口配置信息 $timestamp = $_GET['timest...

免费接入微信登录接口获取openid(无须申请,直接调用)

免费接入微信登录接口获取openid(无须申请,直接调用)

简介免费接入微信登录接口获取openid(无须申请,直接调用,适合web、pc、手机端,全平台兼容)无缝衔接微信获取openid、微信头像地址、微信昵称信息拿到openid之后,就可以自行操作更多身份...

超简单的php无限极分类,生成递归数组并输出树状图

超简单的php无限极分类,生成递归数组并输出树状图

什么是无限级分类?无限级分类是一种分类技巧,例如部门组织,文章分类,学科分类等常用到无限级分类,将其简单理解成分类就好了。其实我们仔细想一下,生活中的分类简直太多了,衣服可以分为男装和女装,也可以分为...

php导出excel中数字会自动转换为科学计数法解决办法

php导出excel中数字会自动转换为科学计数法解决办法

原因:凡数字超过11位数,Excel 表格就会用科学记数法显示。如果要输入超过11位的数,得把单元格设为文本形式或在输入数字前先输入一个英文单引号(')或者加入制表符。数据导出不转换科学计数法...

php微信支付类下载,包含统一下单、回调、退款方法。

php微信支付类下载,包含统一下单、回调、退款方法。

微信支付全流程类文件,包含:统一下单接口、回调验证、微信退款、xml转换、签名生成和CURL等方法,自用类文件非常全,希望大家可以借鉴。另外注意1、下载后的类文件在一个pay的文件夹。2、类文件会带有...

php基于QRcode类生成二维码,类文件下载

php基于QRcode类生成二维码,类文件下载

使用PHP语言生成二维码,还是挺有难度的,除了调用生成二维码图片的接口除外,如果自己写代码生成,真的无从下手。然而,我们可以使用phpqrcode这个现成的类文件,PHP二维码生成类库,利用它可以轻松...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。