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



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


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

 第一、实现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 >
< h 1 > PHP - 短信验证码 < / h 1 >
手机验证码 : < 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.ums 86. 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之短信验证码功能


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

 第一、实现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 =
相关文章
相关标签/搜索