时间:2021-07-01 10:21:17 帮助过:43人阅读
本方法基于Thinkphp,用到了jquery.validate,当然具体项目中也可以不用,下面我就按步骤来写下来。
1.登陆
http://www.alidayu.com,进入网址
用淘宝号登陆即可
2.进入管理中心
3.配置
(1)配置短信签名
(2)配置短信模板
建好后,需要的东西就是APPkey APPsecret
还可以进行测试
引入
下载阿里大于类文件,放在/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");
- }
- //发送手机ajax
- function 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下阿里大于短信验证的详细内容,更多请关注gxlcms其它相关文章!