下面由thinkphp框架教程栏目给大家介绍thinkphp下阿里大于短信验证,希望对需要的朋友有所帮助!
本方法基于thinkphp,用到了jquery.validate,当然具体项目中也可以不用,下面我就按步骤来写下来。
1.准备1.登陆
http://www.alidayu.com,进入网址
用淘宝号登陆即可
2.进入管理中心
3.配置
(1)配置短信签名
(2)配置短信模板
建好后,需要的东西就是appkey appsecret
还可以进行测试
2.数据库
3.后端引入
下载阿里大于类文件,放在/thinkphp/library/org/alidayu(文件夹要大写,坑过自己,部署到服务器后出问题)
通用类里
// 生成短信验证码 public function createsmscode($length = 4){ $min = pow(10 , ($length - 1)); $max = pow(10, $length) - 1; return rand($min, $max); } //发送验证码 public function send_phone($phone){ $code=$this->createsmscode($length = 4); import('org.alidayu.top.topclient'); import('org.alidayu.top.resultset'); import('org.alidayu.top.requestcheckutil'); import('org.alidayu.top.toplogger'); import('org.alidayu.top.request.alibabaaliqinfcsmsnumsendrequest'); $c = new \topclient; $appkey=你的appkey; $secret=你的secret; $c ->appkey = $appkey ; $c ->secretkey = $secret ; $req = new \alibabaaliqinfcsmsnumsendrequest; $req ->setextend( ); $req ->setsmstype( normal ); $req ->setsmsfreesignname( 阿尚测试 ); $req ->setsmsparam( {name:'客户',code:'.$code.',time:'5分钟'} ); $req ->setrecnum( $phone); $req ->setsmstemplatecode( sms_71300157 ); $resp = $c ->execute( $req ); $this->sendmsgresult($resp,$phone,$code); } //验证手机号是否发送成功 前端用ajax,发送成功则提示倒计时,如50秒后可以重新发送 private function sendmsgresult($resp,$phone,$code){ if ($resp->result->success && !$resp->result->code) { $data['phone']=$phone; $data['code']=$code; $data['send_time']=time(); $result=m(code)->add($data); if($result){ $data=发送成功; }else{ $data=发送失败; } } else if ($resp->code || $resp->msg == remote service error) { $data=发送失败; } else { $data=发送失败; } return $data; } // 验证短信验证码是否有效,前端用jquery validate的remote public function checksmscode(){ $mobile = $_post['mobile']; $code = $_post['code']; $nowtimestr = date('y-m-d h:i:s'); $smscodeobj = m(code)->where(mobile='$mobile')->find(); if($smscodeobj){ $smscodetimestr = $smscodeobj['send_time']; $recordcode = $smscodeobj['code']; $flag = $this->checktime($nowtimestr, $smscodetimestr); if($flag&&$code==$recordcode){ echo true; }else{ echo false; } } }
用的类里,我是放在注册类里调用
//发送短信,调用basecontroller里的方法,因为其他模块也要用到这方法
public function send_message(){ $phone=i(post.phone); //data返回失败 但不影响使用 $data=$this->send_phone($phone); $this->ajaxreturn($data,json); }
4.前台 ajax部分功能已经具备,还待完善//发送手机ajaxfunction send_message() { if($(#phone input).valid()){ var phone=$(#phone input).val(); $.post({:u('register/send_message')},phone=+phone,function(data){ }); $(#send_message).html(发送成功); $(#send_message).css(background-color,#2f9cff); }}
以上就是关于thinkphp下阿里大于短信验证的详细内容。