1.获取前端验证码按钮值
$('#dyMobileButton').click(function () {
var phone=$('#phone').val();
var time=60;//产生一个时间60秒
var timer=setInterval(function () {//setInterval倒计时
time--;
if (time>0){
$('#dyMobileButton').html(time+'后重新发送');
$('#dyMobileButton').prop('disabled',true);//开启禁用此按钮
}else{
clearInterval(timer);//清除计时任务
$('#dyMobileButton').html('发送验证码');
$('#dyMobileButton').prop('disabled',false);//disabled禁用
}
},1000)
$.ajax({
url:"{:url('/code')}",
type:"GET",
data:{"phone":phone},
dataType:"json",
success:function (res) {
console.log(res)
}
})
})
2.短信宝
<?php
$statusStr = array(
"0" => "短信发送成功",
"-1" => "参数不全",
"-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!",
"30" => "密码错误",
"40" => "账号不存在",
"41" => "余额不足",
"42" => "帐户已过期",
"43" => "IP地址限制",
"50" => "内容含有敏感词"
);
$smsapi = "http://api.smsbao.com/";
$user = "***"; //短信平台帐号
$pass = md5("****"); //短信平台密码
$content="短信内容";//要发送的短信内容
$phone = "*****";//要发送短信的手机号码
$sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);
$result =file_get_contents($sendurl) ;
echo $statusStr[$result];
?>
3.在控制器中写一个方法
/**
* @return \think\response\Json
* 手机发送短信方法
*/
public function code()
{
if (time()-Cache::get('time')<60){
return json(['code'=>1,'msg'=>'1分钟内不能重复获取验证码','data'=>'']);
}
$tel=input('phone');
$statusStr = array(
"0" => "短信发送成功",
"-1" => "参数不全",
"-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!",
"30" => "密码错误",
"40" => "账号不存在",
"41" => "余额不足",
"42" => "帐户已过期",
"43" => "IP地址限制",
"50" => "内容含有敏感词"
);
$smsapi = "http://api.smsbao.com/";
$user = "****"; //短信平台帐号
$pass = md5("****"); //短信平台密码
$rand=rand(1000,9999); //产生一组4为随机验证码
Cache::set('code',$rand,300);//缓存产生一组4为随机验证码 三分钟后过期
Cache::set('time',time(),60); //记录时间 一分钟内不能重复发送
$content = "今天学废了吗".$rand;//把产生的4位随机码放到要发送的信息内
$phone = $tel;//要发送短信的手机号码
$sendurl = $smsapi . "sms?u=" . $user . "&p=" . $pass . "&m=" . $phone . "&c=" . urlencode($content);
$result = file_get_contents($sendurl);
if ($result!=0){
return json(['code'=>1,'msg'=>$statusStr[$result],'data'=>null]);
}
return json(['code'=>0,'msg'=>'短信发送成功','data'=>$rand]);
}
4.在注册方法中判断客户输入的验证码是否和缓存当中的验证码相同
/**
* @return \think\response\Json
* 注册方法
*/
public function Add()
{
$data=input();
$validate = Loader::validate('Login');//调用独立验证器
if(!$validate->check($data)){
return json(['code'=>1,'info'=>$validate->getError(),'data'=>'']);
}
if ($data['code']!=Cache::get('code')){//在注册的时候判断你输入的验证码是否和存在缓存当中验证码相同
return json(['code'=>1,'info'=>'验证码不正确','data'=>'']);
}
$res=\app\common\model\Register::Add($data);
if ($res){
return json(['code'=>0,'info'=>'注册成功','data'=>'']);
}else{
return json(['code'=>1,'info'=>'注册失败','data'=>'']);
}
}
5.模型的注册
/**
* @param $data
* @return bool|false|int
* 模型的注册
*/
public static function Add($data)
{
$res=new Register();
return $res->allowField(true)->save($data);//allowField过滤字段
}