短信验证码生成步骤
一、点击获取验证码触发事件,生成短信验证码。
$(".btn2").click(function(){ var url="/Public/message"; var data=$("#username").val(); $.ajax({ url:url, data:{'phone':data}, type:'POST', dataType:'json', success: function(r){ if(r.status==200) { layer.msg(r.msg, {icon: 6}); } } }); });
二、生成短信验证码需要准备以下几个步骤
1.短信通道 在tp的配置文件中写的。
-
// 253 云通讯 短信发送接口配置 'SMS_253' => array( 'URI' => '', 'APP_KEY' => '', // 账号 'APP_SECRET' => '', // 密码 ),
2.复制下面两个方法到公共文件function.php中
/** * 用file_get_contents函数,以post方式发送数据处理 类似curl *可以写在function中 */ function httpPostJson($url, $data = ''){ $opts = array( 'http' => array( 'method' => 'POST', 'header' => "Content-type: application/json;charset=UTF-8;Content-Length: " . strlen($data), 'timeout' => 30, 'content' => $data, ), ); //文本数据流创建 $context = stream_context_create($opts); return file_get_contents($url, FALSE, $context); }
/** * 自定义短信发送 可以写在function中 * @param $mobilePhones * @param $sendMsg * @return array */ function SendSMS($mobilePhones,$sendMsg, $signature = '【公司名称】'){ $requestData = array( 'account' => C(''), 'password' => C(''), 'msg' => urlencode($signature . $sendMsg), 'phone' => $mobilePhones, 'report' => 'true', ); $result = httpPostJson(C(''), json_encode($requestData)); $result = json_decode($result, TRUE); if($result === NULL || $result['code'] !== '0' || !empty($result['errorMsg'])){ return FALSE; } return $result['msgId']; }
3.编写点击获取验证码触发的方法
public function message(){ $mobilePhonesStr= I('post.phone'); //验证码随机数 $num = rand(1000,9999); $sendMsg="验证码是:".$num; //调用function.php中SendSMS方法 $result= SendSMS($mobilePhonesStr,$sendMsg); if($result){ session('smscheckcode',$num); //echo session('smscheckcode');die; $r['status']=200; $r['msg']="验证码已发送"; $this->ajaxReturn($r); }else{ $r['status']=400; $r['msg']="验证码发送失败"; $this->ajaxReturn($r); } }