tp5融合阿里大于,一键发送短信

浏览:1054 发布日期:2016/11/08 分类:技术分享
可以方便调用阿里短信验证namespace app\index\controller;

use think\Controller;
use think\Request;
use think\Db;
use think\Loader;

class Alidayu extends Base {

    public function index()
    {   
        // 短信配置信息
        $appkey           = config('sms_appkey');//你的App key
        $secret           = config('sms_appsecret');//你的App Secret:
        $sms_templatecode = config('sms_template_code');
        $sms_signname     = config('sms_signname');

        $ab               = $this->randstring();//获取随机数字        
        $mobile           = input('post.mobile');//接收手机号码
        $captcha          = input('post.captcha');//接收的验证码
        // 验证
        // 实例化验证器
        $validate = Loader::validate('Login');
        // 验证数据
        $data = ['mobile'=>$mobile,'captcha'=>$captcha];
        // 加载语言包
        $validate->loadLang();
        // 验证
        if(!$validate->scene('sms_login')->check($data)) {
            return $this->error($validate->getError());
        }
        $data['yzm_time'] = time(); 
        $data['code']     = $ab;
        $data['num']      = 0;
        $data['mobile']   = $mobile;
        $data['captcha']  = $captcha;
        $res              = Db::name('Code')->where('mobile',$mobile)->find();
        if($res) {
            $interval_time    = $data['yzm_time']-$res['yzm_time'];
            if($interval_time<config('sms_interval')) {
                $data['message']='发送太频繁请稍后重试';

                return $this->error($data['message']);
            } else {
                $data['num'] = 0;
                Db::name('Code')->where('mobile',$mobile)->update($data);
            }
        } else {
            Db::name('Code')->where('mobile',$mobile)->insert($data);
        }

        import('org.util.taobao.top.TopClient');
        import('org.util.taobao.top.ResultSet');
        import('org.util.taobao.top.RequestCheckUtil');
        import('org.util.taobao.top.TopLogger');
        import('org.util.taobao.top.request.AlibabaAliqinFcSmsNumSendRequest');
        // 将需要的类引入,并且将文件名改为原文件名.php的形式
        $c = new \TopClient;
        $c->appkey = $appkey;
        $c->secretKey = $secret;
        $req = new \AlibabaAliqinFcSmsNumSendRequest;
        $req->setExtend("123456");//确定发给的是哪个用户,参数为用户id
        $req->setSmsType("normal");
    
        $req->setSmsFreeSignName($sms_signname);
        $req->setSmsParam("{'code':'".$ab."','product':'小微企业'}");       
        $req->setRecNum("".$mobile."");//参数为用户的手机号码
        $req->setSmsTemplateCode($sms_templatecode);
        $resp = $c->execute($req);
        $postObj = simplexml_load_string($resp, 'SimpleXMLElement', LIBXML_NOCDATA);

        if($resp->result->success ){
            $data['message']="发送成功";
            return $this->success($data['message']);
        }else{
            $data['message']="发送失败";
            return $this->success($data['message']);
        }
        
    }
前台利用AJAX进行验证,十分方便<script type="text/javascript">

//获取手机验证码
function sendSms(){
  var mobile   = $("#mobile").val();
  var pic_code = $("#pic_code").val();
  if(verifymobile(mobile) == false){
    alert('请填写正确的手机号码')
    return false
  }
  $.ajax({
    type:"post",
    url:"{:url('alidayu/index')}",
    data:{"mobile":mobile,"captcha":pic_code},
    dataType:"json",
    success: function(res){
      if(res.code == 0 )
      {
        alert(res.msg);       
      } else{            
        var wait = 60;
        $(".code_button").val((--wait) + "秒后重新发送");
        var time_line = setInterval(function(){
          if(wait == 0)
          {        
            $(".code_button").val("获取手机验证码");
            return clearInterval(time_line);
          }else{
            $(".code_button").val((--wait) + "秒后重新发送"); 
          }    
        },1000);
        alert(res.msg);            
      }     
    }
  });  
}
这里篇幅限制,无法提供所有示例,详细研究请下载源代码,大家共同交流,促进技术进步
源码索取QQ群号 :588401996 或登录小微云商官网:http://w.yunshang.shop
最佳答案
评论( 相关
后面还有条评论,点击查看>>