PHP之短信验证码功能
现在网站在建设网站时为了保证用户信息的真实性,往往会选择发短信给用户手机发验证码信息,只有通过验证的用户才可以注册,这样既保证了用户的联系信息资料的100%的准确性,也为用户提供了一种最方便快捷的注册方式 。
那么我们今天就来说一下 短信发送原理, 如下图
PHP之短信验证码功能
工作开发流程:
第一、实现php手机短信验证功能的基本思路
1、要找到短信服务提供商,接入短信服务
2、在网站信息提交页面请求发送信息
3、服务器向短信服务提供商通信,提交发送请求
4、短信服务提供商通过运营商将信息发送到用户的手机中
第二 :手机号码短信验证前台页面效果实现
*{margin:0;padding:0;}
var InterValObj; //timer变量,控制时间
var count = 60; //间隔函数,1秒执行
var curCount;//当前剩余秒数
function codeRandom(chars) {
var res="";
for(var i=0;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('请填写手机号码'); } }); });
PHP-短信验证码
手机验证码:
第三、调用短信服务器短信接口
?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 "失败";
因为我们为了代码的优雅,把代码分开来写. 方便以后重复使用.所以把发送短息具体封装了一个类.具体看代码:
/**
* 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里面的一些方法,你在第三方的短信验证码服务商提供的实例代码里面都可以看到,功能基本都是大同小异的,所以我们就实现一个属于自己的发送消息类,比较简单.
深圳网站建设www.sz886.com