第一次做短信验证,弄了好几天才明白短信验证流程,希望能对小伙伴们有辣么一点点儿滴帮助
流程示意图(纯手绘)
下面上干货:二话不说直接开撸
页面如下:(由于编辑器不能粘贴html代码,所以只能截图)
JS代码:
function send_phone(){
var mobile_phone=$("#mobile_phone").val();
varmobile_code=$("#mobile_code").val();
if($("#mobile_phone").val()==""){
alert("手机号不能为空!");return false;
}
if(!/^(13[0-9]|14[0-9]|15[0-9]|18[0-9])\d{8}$/i.test($("#mobile_phone").val())){
alert("手机号码不对,请正确填写");return false;
}
varurl="{:url('Sms/index')}";
$.post(url,{"mobile_phone":mobile_phone},function(data){
alert(data);
console.log(data);
});
}
function submit(){
var mobile_phone=$("#mobile_phone").val();
var mobile_code=$("#mobile_code").val();
$.post("{:url('Index/yz')}",{"mobile_phone":mobile_phone,"mobile_code":mobile_code},function(data){
alert(data);
});
}
后台代码:两个控制器(Sms处理接口;Index处理页面显示和表单提交)
/**
* Created by PhpStorm.
* User: shzk
* Date: 2017/4/14
* Time: 10:13
*/
namespace app\index\controller;
use think\Controller;
use think\Cookie;
class Sms extends Controller {
public function index(){
if(request()->isPost()){
$mobile_phone=input('post.mobile_phone');
// 短信内容
$vacode=rand('111111','999999');
//设置验证码cookie为300秒,即五分钟内输入验证码都有效果
Cookie::set('mobile_vcode',$vacode,300);
$message="[SMS]您的验证码是:".$vacode."。请不要把验证码泄露给其他人。";
$sms_name='*****';//短信平台帐号
$sms_pwd='*****';//短信平台密码
$statusStr=array(
"0"=>"短信发送成功",
"-1"=>"参数不全",
"-2"=>"服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!",
"30"=>"密码错误",
"40"=>"账号不存在",
"41"=>"余额不足",
"42"=>"帐户已过期",
"43"=>"IP地址限制",
"50"=>"内容含有敏感词"
);
$smsapi="http://api.smsbao.com/";
$user=$sms_name;//短信平台帐号
$pass=md5("$sms_pwd");//短信平台密码
$content=$message;//要发送的短信内容
$phone=$mobile_phone;//要发送短信的手机号码
$sendurl=$smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);
$result=file_get_contents($sendurl) ;
echo $statusStr[$result];
}
}
}
/*
*/
namespace app\index\controller;
usethink\Controller;
usethink\Cookie;
class Index extends Controller{
public function index(){
return$this->fetch("Index/index");
}
public function yz(){
if(request()->isPost()){
$phone=input('post.mobile_phone');
$code=input('post.mobile_code');
$cookie_code=Cookie::get('mobile_vcode');
if($code==$cookie_code){
$this->success("yes");
}else{
$this->error("error");
}
}else{
$this->error("error");
}
}
}
如果你看了这篇博文对你有收获,请在右下角给本尊点个喜欢,蟹蟹...