1. 程式人生 > >THINKPHP之阿里大魚簡訊介面

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 => "
[email protected]
#$%^&*(){}[]|"); 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介面等自行看指南

相關推薦

THINKPHP阿里大魚簡訊介面

1、前端部分: <script type="text/javascript"> function runReg() { var name=$.trim($("#username").val());

基於redis 和阿里大魚簡訊介面實現網站狀態監控

rpoplpush source destination  redis的 RPOPLPUSH 命令可以很直觀的在多個佇列中傳遞資料。當source和destination 相同時,RPOPLPUSH命令會不斷的將隊尾的元素移到隊首,藉助這個特性我們可以實現一個網站監控系統:

阿里大魚簡訊傳送介面開發

alibaba.aliqin.fc.sms.num.send (簡訊傳送) 向指定手機號碼傳送模板簡訊,模板內可設定部分變數。使用前需要在阿里大於管理中心新增簡訊簽名與簡訊模板。測試時請直接使用正式環境HTTP請求地址。 【重要】批量傳送(一次傳遞多個號碼eg:1381111111,1382222222

【PHP】呼叫阿里大魚簡訊驗證

1.第一步 登陸阿里大於註冊賬號,在使用者管理中心建立應用,確定AppKEY和App Secret還有配置簽名 2.第二步 在應用管理中選擇SDK下載,或者直接點選http://download.csdn.net/detail/s371795639/9695983下載,免費的哦

接入阿里簡訊介面

無論是阿里雲還是騰訊雲,申請簡訊介面的步驟都是一樣的,先申請簡訊簽名,在申請簡訊模板,在下載sdk檔案包,配置後即可。   一、開啟簡訊服務 https://www.aliyun.com/product/sms?spm=5176.10695662.1128094.1.27b83

阿里簡訊介面開發實踐(Java)

隨著網際網路的興起,各行各業的需求都在不斷的增加。隨著業務的擴大,企業給使用者傳送簡訊驗證碼的業務,也是如火如荼。在這裡,calvin給各位開發者推薦阿里雲簡訊平臺。原因有二:1.接入較簡單,開發成本低 2.非常穩定,簡訊可達率99%。      &

.net呼叫阿里簡訊介面

由於阿里雲簡訊介面有兩類: 一類是: AppKey ==== AppSecret ==== AppCode ==== 二類是: AccetKey ==== AccetSecret ==== 根據需求申請相應的key和secret; 這裡我使用的是第二類,千萬不要把一類和二類

新版阿里簡訊介面呼叫

今天專案需要用到阿里雲的簡訊介面,看了文件,感覺文件說的不詳細,demo也是有點亂,找了資料,發現說是今年新改版的,費了點勁,弄好了,阿里的這個簡訊介面呼叫比其他的簡訊介面麻煩點,但更安全點; 前

阿里簡訊介面呼叫

#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Frank import uuid import datetime import hmac import base64 import requests from ur

阿里大魚簡訊平臺使用(Java)

找回密碼簡訊驗證專案中修改密碼需要手機簡訊驗證,由於阿里大魚發簡訊速度快,穩定,因此決定使用阿里大魚。廢話不多說,步驟如下:1.首先登入阿里大魚官網,註冊成為開發者。(http://www.aliday

TP5呼叫阿里簡訊介面實現傳送簡訊功能

因為專案中需要用到阿里雲簡訊驗證碼功能,所以就購買了相應的簡訊包進行測試,以下就是完整程式碼: use Aliyun\Core\Config; use Aliyun\Core\Profile\DefaultProfile; use Aliyun\Core\Defau

Java阿里大魚簡訊接入

(這個是阿里雲裡面的哈,不是淘寶裡面的兩種還是不一樣;阿里雲後臺 簡訊服務裡面的) 簡訊推送在很多專案中都有用到,總結一下吧,下次直接copy程式碼!! 關於accesskeyId和key可以檢視API文件裡面有跳轉連結可以檢視。 package com.alidayu

阿里大魚傳送簡訊(工具類)

前言:需要去申請阿里大魚的賬號 點選跳轉阿里大魚平臺 1.座標 <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-core --> <dependenc

第三方介面呼叫案例(以阿里簡訊服務為例)

第三方介面或者服務大部分都是以rest風格的,需要http請求去呼叫,通過網路傳送請求去呼叫,然後等待第三方服務的響應,併發量多的話,會嚴重拖慢業務邏輯的處理速度。為了提高系統的效能,呼叫第三方服務,最好做成非同步的,如果條件允許,最好用單獨的伺服器,或者幾臺伺服器來做呼叫第三方介面,來提高業務邏輯

springboot+阿里大魚傳送簡訊詳細

1匯入阿里大魚座標 <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</a

Java專案整合阿里雲SMS簡訊介面傳送驗證碼

public static Map MessageExecuteMethod(String mobile) throws ClientException { //設定超時時間-可自行調整 System.setProperty(“sun.net.client.defaultConnectTim

PHP對接阿里大魚實現簡訊的傳送

背景知識: 手機驗證碼這個功能幾乎哪裡都可以看到,那麼PHP如何實現手機驗證碼的傳送呢?下面介紹PHP對接阿里大魚實現簡訊驗證碼傳送。 1.首先登陸阿里雲,點選控制檯: 2.選擇簡訊服務: 3.由於阿里雲的簡訊服務,需要簽名和模板,因此需要先申請: 4.申

thinkphp5詳細使用阿里簡訊最新版(原大魚)教程!

先說一下吧,這篇文章主要教大家如何使用tp5來使用阿里簡訊平臺最新版2.0sdk,也就是所謂的前阿里大魚。 但是高手略過啊,只針對新手,如果大家發現有什麼問題,歡迎留言指出,我會更正! 首先我們下載官方完整包的SDK:[url]https://help.aliyun.com/document_d

python爬蟲雲片網國內簡訊介面爬取

安裝requests,lxml,openpyxl,pandas四個包。 requests爬取 lxml解析 panda轉換並儲存 openpyxl是讀寫excel檔案所用到的包 程式碼奉上: import pandas as pandas import requests from lxm

【java】呼叫阿里雲通訊介面簡訊

【前言】         呼叫簡訊傳送驗證碼的方法阿里雲都寫好了,而且會自動限制單日傳送量,每分鐘一條,同一手機號單日10條等等。安全性很好。而且國際國內都能發。【介面程式碼】package com.candyshop.utils.util; import com.aliy