您好,欢迎访问一九零五行业门户网

javascript - 验证短信验证码是否正确

为了实现短信验证的效果,在jq中,我请求了一次接口,代码如下:
checked:1,
send:function(){
var numbers = /^1\d{10}$/; var val = $('#mobile').val().replace(/\s+/g,); //获取输入手机号码 if($('.yzm').find('span').length == 0 && $('.yzm a').attr('class') == 'send1'){ if(!numbers.test(val) || val.length ==0){ $('.yzm').append('手机格式错误'); return false; } } if(numbers.test(val)){ var time = 60; $('.yzm span').remove(); function timecountdown(){ if(time==0){ clearinterval(timer); $('.yzm a').addclass('send1').removeclass('send0').html(发送验证码); sends.checked = 1; return true; } $('.yzm a').html(time+s后再次发送); time--; return false; sends.checked = 0; }//jq中的方位接口 得到一个验证码 var url = http://192.144.1.168/mjs/user/verificationsign+?useraccounts=+$(#mobile).val(); $.get(url,function(data){

// alert(data);
}); $('.yzm a').addclass('send0').removeclass('send1'); timecountdown(); var timer = setinterval(timecountdown,1000); } 然后再php页面中,用curl获取接口返回值,又请求了一次,代码如下: //在php页面中请求接口 $url = 'http://192.144.1.168/mjs/user/verificationsign?useraccounts='.$useraccounts; //我们统一用的是json格式 $ch = curl_init(); $timeout = 5; curl_setopt($ch, curlopt_url, $url); curl_setopt($ch, curlopt_returntransfer, 1); curl_setopt($ch, curlopt_post, 1); curl_setopt($ch, curlopt_connecttimeout, $timeout); $contents = curl_exec($ch); curl_close($ch); $body = json_decode ($contents, true); if($mcod != $body['code']) { echo 验证码不正确,请输入正确的验证码; 这样就又有一个验证码生成,$mcod != $body['code']一直不会相同,请问大神 这怎么解决

回复内容: 为了实现短信验证的效果,在jq中,我请求了一次接口,代码如下:
checked:1,
send:function(){
var numbers = /^1\d{10}$/; var val = $('#mobile').val().replace(/\s+/g,); //获取输入手机号码 if($('.yzm').find('span').length == 0 && $('.yzm a').attr('class') == 'send1'){ if(!numbers.test(val) || val.length ==0){ $('.yzm').append('手机格式错误'); return false; } } if(numbers.test(val)){ var time = 60; $('.yzm span').remove(); function timecountdown(){ if(time==0){ clearinterval(timer); $('.yzm a').addclass('send1').removeclass('send0').html(发送验证码); sends.checked = 1; return true; } $('.yzm a').html(time+s后再次发送); time--; return false; sends.checked = 0; }//jq中的方位接口 得到一个验证码 var url = http://192.144.1.168/mjs/user/verificationsign+?useraccounts=+$(#mobile).val(); $.get(url,function(data){

// alert(data);
}); $('.yzm a').addclass('send0').removeclass('send1'); timecountdown(); var timer = setinterval(timecountdown,1000); } 然后再php页面中,用curl获取接口返回值,又请求了一次,代码如下: //在php页面中请求接口 $url = 'http://192.144.1.168/mjs/user/verificationsign?useraccounts='.$useraccounts; //我们统一用的是json格式 $ch = curl_init(); $timeout = 5; curl_setopt($ch, curlopt_url, $url); curl_setopt($ch, curlopt_returntransfer, 1); curl_setopt($ch, curlopt_post, 1); curl_setopt($ch, curlopt_connecttimeout, $timeout); $contents = curl_exec($ch); curl_close($ch); $body = json_decode ($contents, true); if($mcod != $body['code']) { echo 验证码不正确,请输入正确的验证码; 这样就又有一个验证码生成,$mcod != $body['code']一直不会相同,请问大神 这怎么解决

用session等方式保存最后一次生成的验证码用来和用户输入作比对...
这个问题其实跟你的curl请求有关,因为你这样请求是没有携带session的,因此每次都相当于是一个新的用户在一个独立的浏览器上去请求,那么每次的结果必然不一样了;
因此你要加上一个:
curl_setopt($ch, curlopt_cookiejar, $file); //这个具体的你去看看手册就知道了
已经解决这个问题,我是用ajax传电话号码到后台,然后从后台请求接口,顺带获取接口返回值,然后用接口返回值和用户提交过来的验证码比较
其它类似信息

推荐信息