THINKPHP之阿里大鱼短信接口


1、前端部分:

<script type="text/javascript">
        function runReg()
        {
            var name=$.trim($("#username").val());
            var pwd = $.trim($("#pwd").val());
            var repwd = $.trim($("#repwd").val());
			var telphone=$('#telphone').val();
			var code=$('#rcode').val();
			var myreg = /^1\d{10}$/;
            if(name == "")
            {
              alert("请填写用户名!");
              return false;
            }
            else if(pwd == "")
            {
              alert('请填写密码!');
              return false;
            }
            else if(repwd == "")
            {
              alert('请填写重复密码!');
              return false;
            }
            else if(pwd != repwd)
            {
                alert("两次密码不一致,请重新输入!");
                $("#username").val("");
                $("#username").focus();
                return false;
            }
			else if(telphone.length!=11)
			{
				alert('请输入正确的11位电话号码!');
				return false;			
			}
			else if(!myreg.test(telphone))
			{
				alert('请输入有效的手机号码!');
				return false;
			}
			else if(code.length!=4)
			{
				alert('请输入正确的4位验证码!');
				return false;
			}
            else
            {
              var urlstr = "/Index/Index/runregist";
              $.ajax({
                type: "POST",
                url: urlstr,
                data: "name="+name+"&pwd="+pwd+"&telphone="+telphone+"&code="+code,
                dataType: 'json',
                contentType: "application/x-www-form-urlencoded",
                async:false,
                success: function(msg){
					if(msg.result == "ok")
					{
						alert("恭喜您注册成功,请进入登入页面登入");
						location.href='/userlogin.html';
					}
					else if(msg.result == "re")
					{
						alert("此用户名已被占用,请重新填写!");
					}
					else if(msg.result == "err1")
					{
						alert("您输入的手机号不匹配,请重新输入!");
					}
					else if(msg.result == "err2")
					{
						alert("您输入的验证码已过时!");
					}
					else if(msg.result == "err3")
					{
						alert("您输入的验证码不正确,请重新输入!");
					}
					else if(msg.result == "err4")
					{
						alert("此手机号已被注册,请重新填写!");
					}
                },
                 error : function(XMLHttpRequest, textStatus, errorThrown) {
                  alert(errorThrown);
                }
              });
              return true;
            }			
        }
		
		//倒计时		
		var times = 60;
		function waitTime() {
			if (times == 0) {
				$("#codeButton").removeAttr("disabled").val("重新获取验证码");
				times = 60;
			} else {
				$("#codeButton").attr("disabled", true).val("在(" + times + ")秒后重新发送");
				times--;
				setTimeout(function() {waitTime()},1000)
			}
		}
			
		//发送验证码
		function codeCheck(){
			var telphone=$('#telphone').val();
			var urlstr = "/Index/Index/registCode";
			if(telphone.length!=11){
				alert('请输入正确的11位电话号码!');
				return true;
			}
			var myreg = /^1\d{10}$/;
	        if(!myreg.test(telphone))
	        {
	            alert('请输入有效的手机号码!');
	            return true;
	        }
			
			$.ajax({
					 type: "GET",
					 url: urlstr,
					 data: {telphone:telphone},
					 success: function(data){
					 	waitTime();
					}
			 });
		}
    </script>
<div class="registdiv">
<div class="registname">用户注册</div>
<table width="500" height="138" border="0">
  <tr>
    <td width="100" align="right">用户名:</td>
    <td colspan="2" width="300"><input type="text" class="retest" id="username" name="username" /></td>
  </tr>
  <tr>
    <td colspan="3">  </td>
  </tr>
  <tr>  
  <tr>
    <td align="right">密码:</td>
    <td colspan="2"><input type="password" class="retest" id="pwd" name="pwd" /></td>
    </tr>
  <tr>
    <td colspan="3">  </td>
  </tr>
  <tr>
    <td align="right">重复密码:</td>
    <td colspan="2"><input type="password" class="retest" id="repwd" name="repwd" /></td>
  </tr>
  <tr>
    <td colspan="3">  </td>
  </tr>
  <tr>
    <td align="right">手机号码:</td>
    <td width="200"><input type="text" class="retest" id="telphone" name="telphone" /></td>
    <td width="200"><input type="button" onClick="codeCheck();" id="codeButton" style="width:130px; margin:0 auto; height:30px; line-height:30px; display:block;" value="获取验证码" /></td>
  </tr>
    <tr>
    <td colspan="3">  </td>
  </tr>
  <tr>
    <td align="right">验证码:</td>
    <td colspan="2"><input type="text" class="retest" id="rcode" name="rcode" size="6" /></td>
  </tr>
</table>

<p><input type="button" id="regist" name="regist" value="注册" class="btnregist" onClick="runReg()"/></p>
</div>
2、SDK下载下来之后修改名字为【alidayu】,放在我们的项目的核心目录, \ThinkPHP\Extend\Vendor 文件夹下面
图片

文件只保留如下2个文件夹和2个文件其他删除即可

图片

3、代码部分:
######**********阿里大鱼*******########
 

//阿里大鱼发送短信函数 
 
public function sendAli($telphone,$randomCode){
        vendor('alidayu.top.TopClient');
        vendor('alidayu.top.ResultSet');
        vendor('alidayu.top.RequestCheckUtil');
        vendor('alidayu.top.TopLogger');
   	 vendor('alidayu.top.request.AlibabaAliqinFcSmsNumSendRequest');
         include "TopSdk.php";     
	date_default_timezone_set('Asia/Shanghai');
        $c = new \TopClient;
        $c->appkey = '23524266';  
        $c->secretKey = 'b421d9dd6deeb0a0e903e4a94b3e5d38';
        $req = new \AlibabaAliqinFcSmsNumSendRequest;
        $req ->setExtend( "123456" );//固定参数
        $req ->setSmsType( "normal" );//固定参数
        $req ->setSmsFreeSignName( "XXXX网" );//来源于配置短信签名 下面列表中有签名名称
        $number = $randomCode;
        $time = 10;
        $req ->setSmsParam( "{number:'{$number}',time:'{$time}'}" ); //变量来源于 配置短信模板 点击列表中的详情 模板内容的变量
        $req ->setRecNum($telphone); //手机号
        $req ->setSmsTemplateCode("SMS_123456"); //配置短信模板 列表中有模板id
        $resp = $c ->execute( $req );
		
//$content = 您将要绑定本号码作为您在XXXX网中的手机号码。手机验证码为:${number},此验证码${time}分钟以内有效!;       //内容	
//object(SimpleXMLElement)#8 (2) { ["result"]=> object(SimpleXMLElement)#7 (3) { ["err_code"]=> string(1) "0" ["model"]=> string(26) "104469829648^1106082240893" ["success"]=> string(4) "true" } ["request_id"]=> string(13) "10fk2epu4bw4l" }

		if($resp->result->success && !$resp->result->code){
			//发送成功
			return 1;
		}else if($resp->code || $resp->msg =="Remote service error"){
			//发送失败
			return 0;
		}else{
			//未知情况
			return 0;	
		}
    }

//追加手机验证码
    public function registCode()
    {
		$telphone=$_GET['telphone'];
		$randomCode=$this->randCode(4,1);
		$res = $this->sendAli($telphone , $randomCode);
		if($res){
			$_SESSION['registTelphone']=$telphone;
			$_SESSION['registCode']=$randomCode;
			$_SESSION['time']=time();
			$this->success('短信已成功发送至您的手机,请注意查收!');
			$this->assign('jumpUrl',U('/Index/regist'));
		}else{
			$this->assign('jumpUrl',U('/Index/regist'));
			$this->error('发送失败!');
		}
	}
	/**
	 +----------------------------------------------------------
	 * 生成随机字符串
	 +----------------------------------------------------------
	 * @param int       $length  要生成的随机字符串长度
	 * @param string    $type    随机码类型:0,数字+大写字母;1,数字;2,小写字母;3,大写字母;4,特殊字符;-1,数字+大小写字母+特殊字符
	 +----------------------------------------------------------
	 * @return string
	 +----------------------------------------------------------
	 */
	function randCode($length = 5, $type = 0) {
		$arr = array(1 => "0123456789", 2 => "abcdefghijklmnopqrstuvwxyz", 3 => "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 4 => "~@#$%^&*(){}[]|");
		if ($type == 0) {
			array_pop($arr);
			$string = implode("", $arr);
		} else if ($type == "-1") {
			$string = implode("", $arr);
		} else {
			$string = $arr[$type];
		}
		$count = strlen($string) - 1;
		for ($i = 0; $i < $length; $i++) {
			$str[$i] = $string[rand(0, $count)];
			$code .= $str[$i];
		}
		return $code;
	}
/**
	 +----------------------------------------------------------
	 * 生成随机字符串
	 +----------------------------------------------------------
	 * @param int       $length  要生成的随机字符串长度
	 * @param string    $type    随机码类型:0,数字+大写字母;1,数字;2,小写字母;3,大写字母;4,特殊字符;-1,数字+大小写字母+特殊字符
	 +----------------------------------------------------------
	 * @return string
	 +----------------------------------------------------------
	 */

######**********阿里大鱼*******########

//注册
   public function runregist()
    {
	########*******追加手机注册******############
		$telphone=$_POST['telphone'];
		$code=$_POST['code'];
		$reg_error=1;
		if($telphone!=$_SESSION['registTelphone']){
			$reg_error=2;
		}
		if((time()-intval($_SESSION['time']))>10*60){
			$reg_error=3;
		}
		if($code!=$_SESSION['registCode']){
			$reg_error=4;
		}

		$rgtel = M('member')->where(array('tel'=>$telphone))->find();
		if(count($rgtel) >0){
            $reg_error=5;
		}
		
		$info['tel']=$telphone;
	########*******追加手机注册******############
	
        $info['username'] = $_POST['name'];
        $info['password'] = I('pwd','','md5');
        $info['schoolid']= I('post.schoolid');
		$info['school']=I('post.schoolname');
        $user = M('member')->where(array('username'=>I('post.name')))->find();
        $result = 'no';
        if(count($user) >0){
            $result = 're';
		}else{
			if($reg_error==1){
				M('member')->add($info);
            	$result = 'ok';
			}else if($reg_error==2){
				$result = 'err1';	
			}else if($reg_error==3){
				$result = 'err2';	
			}else if($reg_error==4){
				$result = 'err3';	
			}else if($reg_error==5){
				$result = 'err4';	
			}
		}
        print json_encode(array('reg_error'=>$reg_error,'result'=>$result));
    } 

注意:阿里大鱼注册、应用创建、配置管理【验证码】、下载API接口等自行看指南


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值