tp5.0框架手机短信验证码

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过滤字段
    }

上一篇:MyBatis批量插入数据


下一篇:[python自动化]selenium实现超星某某通自动评论