【传智播客郑州校区分享】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>
<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之短信验证码功能
现在网站在建设网站时为了保证用户信息的真实性,往往会选择发短信给用户手机发验证码信息,只有通过验证的用户才可以注册,这样既保证了用户的联系信息资料的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>
<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里面的一些方法,你在第三方的短信验证码服务商提供的实例代码里面都可以看到,功能基本都是大同小异的,所以我们就实现一个属于自己的发送消息类,比较简单.
最后,我们就实现了一个属于自己的短信验证码发送功能
那么最后,你学会了吗?