本方法基于Thinkphp,用到了jquery.validate,当然具体项目中也可以不用,下面我就按步骤来写下来。
1.准备
1.登陆
http://www.alidayu.com,进入网址
用淘宝号登陆即可
2.进入管理中心
php入门到就业线上直播课:进入学习
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API调试工具:点击使用
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的remotepublic 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下阿里大于短信验证的详细内容,更多请关注php中文网其它相关文章!