在项目中碰到一个写手机验证码的问题,所以写出来:
这是前段页面,使用ajax发送了一个json格式的手机号码过去
<scriptsrc="jquery-1.11.1.min.js"type="text/javascript"></script><scripttype="text/javascript">var InterValObj; //timer变量,控制时间var count = 120; //间隔函数,1秒执行var curCount;//当前剩余秒数var code = ""; //验证码var codeLength = 4;//验证码长度function sendMessage() {curCount = count;var phone=$("#phone").val();//手机号码if(phone != ""){//设置button效果,开始计时$("#btnSendCode").attr("disabled", "true");$("#btnSendCode").val("请在" + curCount + "秒内输入验证码");InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次//向后台发送处理数据for (var i = 0; i < codeLength; i++) {code += parseInt(Math.random() * 9).toString();}$.ajax({type: "post", //用POST方式传输dataType: "json", //数据格式:JSONurl: 'http://192.168.1.100/cancertool/index.php?g=home&m=Api&a=send _phone', //目标地址data: {"phone":phone},//error: function (XMLHttpRequest, textStatus, errorThrown) { },success: function(json){/*if(json.success==1){alert("发送成功");}else{alert("发送失败");return false;}*/alert(json.code);}});}else{alert("手机号码不能为空!");}}//timer处理函数function SetRemainTime() {if (curCount == 0) {window.clearInterval(InterValObj);//停止计时器$("#btnSendCode").removeAttr("disabled");//启用按钮$("#btnSendCode").val("重新发送验证码");code = ""; //清除验证码。如果不清除,过时间后,输入收到的验证码依然有效}else {curCount--;$("#btnSendCode").val("请在" + curCount + "秒内输入验证码");}}</script></head><body><form><div><fontcolor="red">*</font>手机号码:</div><div><inputtype="text"id="phone"name="phone"/></div><div><fontcolor="red">*</font>验证码:</div><div><inputtype="text"id="checkCode"name="checkCode"size="6"/><inputid="btnSendCode"type="button"value="发送验证码"onclick="sendMessage()"/></div></form>在接收端,我使用的是TP框架,接收并返回一个随机码:
publicfunctionsend_phone(){import ('ORG.msgSend');$phone=$this->_post('phone');$msgsend=newmsgSend();$code=$msgsend->random();//生成随机数$msg='你的验证码为:'."$code";//$res=$msgsend->sendMsg($phone,$msg);if(isset($msg)){$this->data['code']=$code;$this->ajaxReturn($this->data,'JSON');//$this->ajaxReturn($this->data,'JSON');}else{$this->data['code']=0;$this->ajaxReturn($this->data,'JSON');}}msgSend类:
<?php/***/classmsgSend{constMSG_USERNAME='';constMSG_PASSWORD='';constMSG_URL='';constRAMDOM_CODE='1234567890';constCODE_LENGTH = 4;publicfunction__construct(){}publicfunctionsendMsg($sendto,$msg){$msg= rawurlencode($msg);//return file_get_contents();}publicfunctionrandom(){returnsubstr(str_shuffle(self::RAMDOM_CODE), 0,self::CODE_LENGTH);}}?>