【传智播客郑州校区分享】PHP之短信验证码功能


【传智播客郑州校区分享】PHP之短信验证码功能 
现在网站在建设网站时为了保证用户信息的真实性,往往会选择发短信给用户手机发验证码信息,只有通过验证的用户才可以注册,这样既保证了用户的联系信息资料的100%的准确性,也为用户提供了一种最方便快捷的注册方式 。
那么我们今天就来说一下 短信发送原理, 如下图
【传智播客郑州校区分享】PHP之短信验证码功能
工作开发流程:

 第一、实现php手机短信验证功能的基本思路
  1、要找到短信服务提供商,接入短信服务
  2、在网站信息提交页面请求发送信息
  3、服务器向短信服务提供商通信,提交发送请求

4、短信服务提供商通过运营商将信息发送到用户的手机中

第二 :手机号码短信验证前台页面效果实现

[AppleScript] 纯文本查看 复制代码
?
<!DOCTYPE html>
<html lang="en">
<head>
    <title>郑州传智播客</title>
    <meta charset="UTF-8">
    <meta name="Author" content="PHP就业老师"/>
<style type="text/css">
    *{margin:0;padding:0;}
</style>
    <script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
    <script type="text/javascript">
 
        var InterValObj; //timer变量,控制时间
 
        var count = 60; //间隔函数,1秒执行
 
        var curCount;//当前剩余秒数
 
        function codeRandom(chars) {
            var res="";
            for(var i=0;i<chars;i++){
                res += Math.floor(Math.random()*10);
            }
           return res;
        }
 
        //timer处理函数
 
        function SetRemainTime() {
 
            if (curCount == 0) {
 
                window.clearInterval(InterValObj);//停止计时器
 
                $("#sub").removeAttr("disabled");//启用按钮
 
                $("#sub").val("重新发送验证码");
 
                code = ""; //清除验证码。如果不清除,过时间后,输入收到的验证码依然有效
 
            }
            else {
                curCount--;
                $("#sub").val("请在" + curCount + "秒内输入验证码");
            }
 
        }
        //获取手机号码
  $(function () {
    $("#sub").click(function () {
        var phone=$("#phone").val(); //获取手机号码
        curCount = count;
        if(phone!=''){
 
            //验证手机有效性
 
            var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
 
            if(!myreg.test($('#phone').val()))
 
            {
 
                alert('请输入有效的手机号码!');
 
                return false;
 
            }
 
            phone = $('#phone').val();
 
        //验证码(随机生成)
        var code= codeRandom(4);
            //设置button效果,开始计时
 
            $("#sub").attr("disabled", "true");
 
            $("#sub").val("请在" + curCount + "秒内输入验证码");
 
            InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次
 
      //发送数据到后台 通过Ajax
        $.ajax({
            //设置的参数
            type: "post",
            url: "data.php",
            data:{"code":code,"phone":phone},
            success:function (msg) {
                alert(msg);
            }
        });}else{
            alert('请填写手机号码');
 
 
        }
    });
  });
    </script>
</head>
<body>
<h1>PHP-短信验证码</h1>
手机验证码:<input type="text" name="phone" id="phone">
<input id="sub" type="button" value="发送验证码" />
</body>
</html>
第三、调用短信服务器短信接口
[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
?php
/**
 * Created by PhpStorm.
 * User: Leo
 * Date: 2017/8/30
 * Time: 14:59
 */
 
//$_post
$phone= isset($_POST['phone'])?$_POST['phone']:'';
$code = isset($_POST['code'])?$_POST['code']:'';
require (dirname(__FILE__).'/config.php');
require (dirname(__FILE__).'/SendSMS.php');
 
//实例化短信发送类
$sms= new  SendSMS($options['account'],$options['password']);
$context='验证码'.$code;
$res=$sms->send($phone,$context);
if ($res){
   echo "成功";
}else{
    echo "失败";

因为我们为了代码的优雅,把代码分开来写. 方便以后重复使用.所以把发送短息具体封装了一个类.具体看代码:
[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
/**
 * Created by PhpStorm.
 * User: Leo
 * Date: 2017/8/30
 * Time: 15:26
 */
/**
 * 设置用户信息
 */
class SendSMS{
 const SENDURL='http://gd.ums86.com:8899/sms/Api/Send.do';
    private $_un;
    private $_pw;
 
    function __construct($user,$pwd){
        $this->_un=$user;
        $this->_pw=$pwd;
    }
 
    function send($phone,$content,$isreport=0){
        //发送数据
        $data=array(
            'un'=>$this->_un,
            'pw'=>$this->_pw,
            'sm'=>$content,
            'da'=>$phone,
            'rd'=>$isreport,
            'rf'=>2,
            'tf'=>3,
            'dc'=>15,
 
        );
 
        $url=SendSMS::SENDURL.'?'.http_build_query($data);
        $this->curlGet($url);
 
    }
   public function curlGet($url){
     $ch= curl_init();
     curl_setopt($ch,CURLOPT_HEADER,0);
     curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
     curl_setopt($ch,CURLOPT_URL,$url);
     $res=curl_exec($ch);
     curl_close($ch);
     return $res;
    }
}

在SendSMS里面的一些方法,你在第三方的短信验证码服务商提供的实例代码里面都可以看到,功能基本都是大同小异的,所以我们就实现一个属于自己的发送消息类,比较简单.
最后,我们就实现了一个属于自己的短信验证码发送功能
【传智播客郑州校区分享】PHP之短信验证码功能
那么最后,你学会了吗?
【郑州校区分享】PHP之短信验证码功能


【传智播客郑州校区分享】PHP之短信验证码功能 
现在网站在建设网站时为了保证用户信息的真实性,往往会选择发短信给用户手机发验证码信息,只有通过验证的用户才可以注册,这样既保证了用户的联系信息资料的100%的准确性,也为用户提供了一种最方便快捷的注册方式 。
那么我们今天就来说一下 短信发送原理, 如下图
【传智播客郑州校区分享】PHP之短信验证码功能
工作开发流程:

 第一、实现php手机短信验证功能的基本思路
  1、要找到短信服务提供商,接入短信服务
  2、在网站信息提交页面请求发送信息
  3、服务器向短信服务提供商通信,提交发送请求

4、短信服务提供商通过运营商将信息发送到用户的手机中

第二 :手机号码短信验证前台页面效果实现

[AppleScript] 纯文本查看 复制代码
?
<!DOCTYPE html>
<html lang="en">
<head>
    <title>郑州传智播客</title>
    <meta charset="UTF-8">
    <meta name="Author" content="PHP就业老师"/>
<style type="text/css">
    *{margin:0;padding:0;}
</style>
    <script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
    <script type="text/javascript">
 
        var InterValObj; //timer变量,控制时间
 
        var count = 60; //间隔函数,1秒执行
 
        var curCount;//当前剩余秒数
 
        function codeRandom(chars) {
            var res="";
            for(var i=0;i<chars;i++){
                res += Math.floor(Math.random()*10);
            }
           return res;
        }
 
        //timer处理函数
 
        function SetRemainTime() {
 
            if (curCount == 0) {
 
                window.clearInterval(InterValObj);//停止计时器
 
                $("#sub").removeAttr("disabled");//启用按钮
 
                $("#sub").val("重新发送验证码");
 
                code = ""; //清除验证码。如果不清除,过时间后,输入收到的验证码依然有效
 
            }
            else {
                curCount--;
                $("#sub").val("请在" + curCount + "秒内输入验证码");
            }
 
        }
        //获取手机号码
  $(function () {
    $("#sub").click(function () {
        var phone=$("#phone").val(); //获取手机号码
        curCount = count;
        if(phone!=''){
 
            //验证手机有效性
 
            var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
 
            if(!myreg.test($('#phone').val()))
 
            {
 
                alert('请输入有效的手机号码!');
 
                return false;
 
            }
 
            phone = $('#phone').val();
 
        //验证码(随机生成)
        var code= codeRandom(4);
            //设置button效果,开始计时
 
            $("#sub").attr("disabled", "true");
 
            $("#sub").val("请在" + curCount + "秒内输入验证码");
 
            InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次
 
      //发送数据到后台 通过Ajax
        $.ajax({
            //设置的参数
            type: "post",
            url: "data.php",
            data:{"code":code,"phone":phone},
            success:function (msg) {
                alert(msg);
            }
        });}else{
            alert('请填写手机号码');
 
 
        }
    });
  });
    </script>
</head>
<body>
<h1>PHP-短信验证码</h1>
手机验证码:<input type="text" name="phone" id="phone">
<input id="sub" type="button" value="发送验证码" />
</body>
</html>
第三、调用短信服务器短信接口
[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
?php
/**
 * Created by PhpStorm.
 * User: Leo
 * Date: 2017/8/30
 * Time: 14:59
 */
 
//$_post
$phone= isset($_POST['phone'])?$_POST['phone']:'';
$code = isset($_POST['code'])?$_POST['code']:'';
require (dirname(__FILE__).'/config.php');
require (dirname(__FILE__).'/SendSMS.php');
 
//实例化短信发送类
$sms= new  SendSMS($options['account'],$options['password']);
$context='验证码'.$code;
$res=$sms->send($phone,$context);
if ($res){
   echo "成功";
}else{
    echo "失败";

因为我们为了代码的优雅,把代码分开来写. 方便以后重复使用.所以把发送短息具体封装了一个类.具体看代码:
[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
/**
 * Created by PhpStorm.
 * User: Leo
 * Date: 2017/8/30
 * Time: 15:26
 */
/**
 * 设置用户信息
 */
class SendSMS{
 const SENDURL='http://gd.ums86.com:8899/sms/Api/Send.do';
    private $_un;
    private $_pw;
 
    function __construct($user,$pwd){
        $this->_un=$user;
        $this->_pw=$pwd;
    }
 
    function send($phone,$content,$isreport=0){
        //发送数据
        $data=array(
            'un'=>$this->_un,
            'pw'=>$this->_pw,
            'sm'=>$content,
            'da'=>$phone,
            'rd'=>$isreport,
            'rf'=>2,
            'tf'=>3,
            'dc'=>15,
 
        );
 
        $url=SendSMS::SENDURL.'?'.http_build_query($data);
        $this->curlGet($url);
 
    }
   public function curlGet($url){
     $ch= curl_init();
     curl_setopt($ch,CURLOPT_HEADER,0);
     curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
     curl_setopt($ch,CURLOPT_URL,$url);
     $res=curl_exec($ch);
     curl_close($ch);
     return $res;
    }
}

在SendSMS里面的一些方法,你在第三方的短信验证码服务商提供的实例代码里面都可以看到,功能基本都是大同小异的,所以我们就实现一个属于自己的发送消息类,比较简单.
最后,我们就实现了一个属于自己的短信验证码发送功能
【传智播客郑州校区分享】PHP之短信验证码功能
那么最后,你学会了吗?

相关文章:

  • 2021-11-07
  • 2021-10-28
  • 2021-12-22
  • 2021-05-09
  • 2021-04-15
  • 2021-06-12
  • 2021-12-02
  • 2021-12-02
猜你喜欢
  • 2021-10-16
  • 2021-08-24
  • 2021-07-26
  • 2021-07-09
  • 2021-07-13
  • 2022-01-11
  • 2021-07-28
相关资源
相似解决方案