1.设计一个简单的手机验证界面:
2.为获取验证码设置点击事件,并将值发送到send()方法:
$(document).on('click','#aaa',function () { var a = $("[name='phone']").val(); if (a==""){ return false;//判断输入的手机号是否为空 } $.get( "{:url('index/send')}", {phone:a}, function () { } ) })
3.判断是否能够传输值
4.传输成功之后,为数据库中添加字段,前台控制器方法为:
public function send(){ $data['phone']=input('get.phone');//获取手机号 $data['yzm'] = rand(1000,9999);//设置随机数 //http://api.k780.com/?app=sms.send&tempid=你创建的模板ID¶m=替换参数&phone=手机号码&appkey=APPKEY&sign=SIGN&format=json $data['y_time'] = time();//添加时间戳 $res = Db::table('yz')->insert($data);//将数据添加至yz数据库 if ($res){ return 1;//添加成功,则返回1 } } }
数据库中的字段:
添加成功后,json返回:
$.get( "{:url('index/send')}", {phone:a}, function (data) { if (data==1){ alert('发送成功'); } } )
5.随后进行验证,以及修改验证码的状态
class Index extends Controller { public function index(){ if (Request::instance()->isGet()){ return view(); }else{ $val = input('post.yz');//接收表单中输入的验证码 //print_r($val); if ($val==""){ $this->error('验证码不能为空');//判断验证码是否为空 } //进行数据查询,判断接收到的验证码是否存在以及状态是否为1 $res = Db::table('yz')->where('yzm','like',$val)->where('status','in',1)->find(); if ($res){ $t = time();//获取当前时间 if ($res['y_time']-$t>60){//判断时间,如果时间大于60秒,则验证码过期 $this->error('验证码过期'); } Db::table('yz')->where('yzm','like',$val)->where('status','in',1)->update(['status'=>2]); //如果登录成功,表明已经使用过该验证码,则改变其状态 $this->success('登录成功'); }else{ $this->error('验证码错误'); } } }
让我们来看一看效果:
如果时间超时,则显示验证码已过期,这里就不一一展示了。