1. 程式人生 > >簡單實現手機號驗證碼註冊功能

簡單實現手機號驗證碼註冊功能

jsp部分:是一個普通的<input>標籤

<input type="tel" name="unumber"
id="phone" placeholder="請輸入手機號" >
<input  type="tel" 
name="input_code" id="code" placeholder="請輸入驗證碼" >
<input  type="button"
style=" border-radius: 5px;width: 100%; height: 100%; text-align: center; padding-left: 2px"
	id="getCode" value="獲取" onclick="sendCode(this)"
>

js部分:

// 點選獲取,進入倒計時,按序號進行

clock = ''; nums = 60; btn = null; function time(thisBtn) {//③time()函式處理“獲取”按鈕 btn = thisBtn; btn.disabled = true; // 將按鈕置為不可點選 btn.value = nums + '秒後可重新獲取';//讓按鈕顯示倒計時 clock = setInterval(doLoop, 1000); // ④setInterval(arg1,arg2)為定時器,arg1為執行哪個函式,arg2為多久執行一次(單位毫秒), } function doLoop() { nums--; if (nums > 0) { btn.value = nums + '秒後可重新獲取'; } else {//如果倒數計時結束,就清除定時器,將按鈕狀態改為可點選,並將按鈕值顯示為“重新發送”,最後重置倒計時時間60秒。 clearInterval(clock); // 清除js定時器 btn.disabled = false; btn.value = '重新發送驗證碼'; nums = 60; // 重置時間 } } function sendCode(ele)
{// ①點擊出發函數,進入後臺傳送驗證碼 $.ajax({ url : "UserServlet?operation=send", data : { "phone" : $("#phone").val() }, type : "post", async : true, success : function(data) {//成功回撥函式,失敗不呼叫! time(ele);//②傳送成功後,呼叫函式time(); }, }); }


後臺java程式碼:

// 向用戶手機號傳送驗證碼,並儲存在session域中,方便進行驗證此驗證碼是否輸入正確。 
public void send(HttpServletRequest request, HttpServletResponse response) {
		String phone = request.getParameter("phone");
		try {
			String code = SendMessage.sendMess(phone)
;//此處為自己封裝的sendMess()方法,獲取驗證碼,見下面。 request.getSession().setAttribute("code", code); } catch (Exception e1) { // TODO Auto-generated catch block try { response.getWriter().write("傳送失敗了"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } try { response.getWriter().write("傳送成功"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
//此處用的是網易雲簡訊服務,本段程式碼可直接拷貝使用,需更改相應賬號、祕鑰、以及簡訊id,也可自行參考網易雲簡訊開發手冊。
public class SendMessage {
 //傳送驗證碼的請求路徑URL
    private static final String
            SERVER_URL="https://api.netease.im/sms/sendcode.action";
    //網易雲信分配的賬號,請替換你在管理後臺應用下申請的Appkey
    private static final String 
            APP_KEY="545ab725fbfe94fa3585bf24ba18a889";
    //網易雲信分配的金鑰,請替換你在管理後臺應用下申請的appSecret
    private static final String APP_SECRET="5862f3168049";
    //隨機數
    private static final String NONCE="123456";
    //簡訊模板ID
    private static final String TEMPLATEID="3094133";
    //手機號
    //private static final String MOBILE="13812186059";
    //驗證碼長度,範圍4~10,預設為4
    private static final String CODELEN="4";


    public static String sendMess(String phone) throws Exception {


        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(SERVER_URL);
        String curTime = String.valueOf((new Date()).getTime() / 1000L);
        /*
         * 參考計算CheckSum的java程式碼,在上述文件的引數列表中,有CheckSum的計算文件示例
         */
        String checkSum = CheckSumBuilder.getCheckSum(APP_SECRET, NONCE, curTime);


        // 設定請求的header
        httpPost.addHeader("AppKey", APP_KEY);
        httpPost.addHeader("Nonce", NONCE);
        httpPost.addHeader("CurTime", curTime);
        httpPost.addHeader("CheckSum", checkSum);
        httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");


        // 設定請求的的引數,requestBody引數
        List<NameValuePair> nvps = new ArrayList<NameValuePair>();
        /*
         * 1.如果是模板簡訊,請注意引數mobile是有s的,詳細引數配置請參考“傳送模板簡訊文件”
         * 2.引數格式是jsonArray的格式,例如 "['13888888888','13666666666']"
         * 3.params是根據你模板裡面有幾個引數,那裡面的引數也是jsonArray格式
         */
        nvps.add(new BasicNameValuePair("templateid", TEMPLATEID));
        nvps.add(new BasicNameValuePair("mobile", phone));
        nvps.add(new BasicNameValuePair("codeLen", CODELEN));


        httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));


        // 執行請求
        HttpResponse response = httpClient.execute(httpPost);
        /*
         * 1.列印執行結果,列印結果一般會200、315、403、404、413、414、500
         * 2.具體的code有問題的可以參考官網的Code狀態表
         * 
         * 
         * {"code":200,"msg":"1","obj":"8588"}
         */
        
        String result = EntityUtils.toString(response.getEntity(), "utf-8");
       //將輸出結果進行解析,獲取傳送出去的驗證碼,例如上述中的“8588”。
        String[] results = result.split(":");
        String _result =results[3].substring(1, 5);
        
        return _result;
    }
}


相關推薦

簡單實現機號驗證註冊功能

jsp部分:是一個普通的<input>標籤 <input type="tel" name="unumber" id="phone" placeholder="請輸入手機號" > <input type="tel" name="input_

簡單實現機號銀行卡的同步顯示功能

簡單實現手機號銀行卡的同步顯示功能 這是某盟的一道面試題 難道不都是隻要有了清晰的思路後邊寫邊優化麼 當時我就說了思路用計算屬性根據輸入框的內容計算出預覽框的值 處理focus和blur事件即可 非要手寫,手寫根本寫不出啊,然後面試官就認為我不會 無語了 要求如下 輸入框輸入內容資料長度大於0,展

Laravel實現小程式使用openid登陸、機號驗證登陸、賬戶密碼登陸三種登陸方式

目前開發小程式,按需求要實現3種登陸方式: 1、微信授權登陸 2、賬戶密碼登陸 3、手機號、驗證碼登陸 我使用laravel自帶的Auth認證機制,通過attempt方法進行賬戶驗證,但是預設的認證機制必須包含password欄位,而我的第1、3種登陸方式都沒有

Servlet實現一個簡單的登入【驗證功能

Servlet實現一個簡單的登入【驗證碼】功能 開發工具 主要用的開發工具為 MyEclipse(2014、2016均可)、Tomcat 6.0以上、瀏覽器等。 開發環境 開發環境為windows系統,已安裝配置Java最新版開發環境。 主要功

【原始碼分享】java實現對接簡訊驗證應用功能

今天公司提出一個需求,要在現有專案上收集註冊使用者的真實手機號,由於之前沒有接觸過這一塊,只能尋求度孃的幫助,經過一天的努力,終於完成了,現整理記錄下已備查閱。 1 解決方案:在註冊時要求使用者進行手機驗證。2 尋找簡訊供應商:由於對這一塊不是太懂,大學同學推薦一家他們公司在用的給我。3 程式碼實現 首先到

登入之機號驗證登入

今天測試雲之訊api 雲之訊官網提供原始碼只需要修改就好我的是放入tp5路徑如下:前端程式碼腦補 只有一個input和按鈕直接上程式碼index.php<?php namespace app\admin\controller; use think\Db; use thi

Python3版本Django實現免費手機驗證註冊

Demo程式碼已放上GitHub,實現登入簡訊校驗+極驗驗證 開啟網站互億無線註冊一個賬號,有50條免費簡訊 登入進去後會有以下頁面 使用圖中的APIID和APIKEY開啟你的免費手機

使用者機號獲取驗證註冊原始碼分享

 叮~ 你的原始碼分享純乾貨到了, 請注意查收! 使用者手機號註冊原始碼分享,首頁獲取驗證碼,呼叫阿里大魚簡訊驗證碼,介面thinkphp5.2寫的,可以判斷手機號是否註冊,簡訊傳送是否成功。 <!DOCTYPE html> <html>  

APICloud知識教程 | 使用者機號獲取驗證註冊原始碼分享

分享自:APICloud官方論壇   作者:論壇版主【funy】   使用者手機號註冊原始碼分享,首頁獲取驗證碼,呼叫阿里大魚簡訊驗證碼,介面thinkphp5.2寫的,可以判斷手機號是否註冊,簡訊傳送是否成功。 <!DOC

layui自定義驗證規則 實現傳送非同步請求校驗機號是否已註冊

//自定義驗證規則 form.verify({ name: function(value, item){//value:表單的值、item:表單的DOM物件 if(!new RegExp(’1+′).t

Android 基於bmob平臺的手機登入驗證註冊功能實現

    首先是基於Bmob 平臺,採用MVP 開發模式。效果見圖:           下面一 一給出原始碼:   MVP 目錄結構:

實現輸入驗證功能

有關 operation password 登陸 註冊 def you != 思路 實驗題目: 實驗思路: 首先對java的圖形界面設計和時間處理這兩方面的內容熟悉掌握,一步一步編出各個框 進行輸入 ,調位置,運用事件處理的相關知識進行按鈕的選擇,運

JAVA實現郵件驗證註冊功能中使用)

原始碼: 連結:https://pan.baidu.com/s/1iSRybqDdzYU8apEs1OtQBw 提取碼:q0gb  易郵 and foxmail 連結:https://pan.baidu.com/s/1woOxn-UjmoALCQDjFuGAQQ&n

【短信插件】微贊微信管理系統如何實現短信驗證功能

fun ctr 管理系 code 聲明 修改 如何 .net 短信 找到了一家不錯的短信插件,有需要對接的可以查看學習,在這邊分享一下,有需要的可以詳細看看,了解一下。http://www.ihuyi.com/插件說明本插件系互億無線針對微贊管理系統短信插件開發,請按以下說

【原始碼分享】簡訊如何實現ECmall_V2.3驗證功能

對接簡訊的時候發現一家簡訊公司,有些不錯的簡訊驗證碼的外掛,對接起來挺方便的,有需求的可以看一下。http://www.ihuyi.com/ 外掛說明本外掛系互億無線針對ECmall_V2.3簡訊外掛開發,外掛內的所有檔案均為對原檔案的修改,如果你的系統經過二次開發,安裝本外掛之前,請仔細核對修改。 功能

【源分享】短信如何實現ECmall_V2.3驗證功能

說明 管理 處理 用戶註冊 手機號 方便 功能介紹 發現 源碼 對接短信的時候發現一家短信公司,有些不錯的短信驗證碼的插件,對接起來挺方便的,有需求的可以看一下。http://www.ihuyi.com/ 插件說明本插件系互億無線針對ECmall_V2.3短信插件開發,插件

【源分享】POSCMS功能如何實現短信驗證

linu 註冊驗證 驗證 說明 環境 用戶註冊 安裝步驟 2.0 開啟 對接短信的時候發現一家短信公司,有些不錯的短信驗證碼的插件,對接起來挺方便的,有需求的可以看一下。http://www.ihuyi.com/ 插件說明 本插件系互億無線針對POSCMS V3.2.0 短

在servlet中實現驗證功能

1:使用的工具 myeclipse2015 jdk1.8 tomcat8.0 2:目錄結構 3:原始碼 index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&

java 實現傳送簡訊驗證功能

如何使用java + maven的專案環境傳送簡訊驗證碼,本文使用的是榛子云簡訊 的介面。 1. 安裝sdk 下載地址: http://smsow.zhenzikj.com/doc/sdk.html 下載下來是jar檔案,需要將jar釋出到本地的maven倉庫中, 在c

使用者名稱、密碼、機號驗證驗證獲取,勾選協議

<script type="text/javascript"> function CheckLogin(obj){ if(obj.username.value=='') { alert('請輸入使用者名稱'); ob