網站登入密碼忘記後,通過向手機發送驗證碼實現找回密碼的實現方法
阿新 • • 發佈:2019-01-26
今天我想了一天如何實現網站使用者在忘記了密碼後,如何通過向手機發送驗證碼來重新設定密碼。驗證碼的驗證以及生成都已經做好了,現在主要是解決如何向用戶手機發送簡訊。顯然這需要一個第三方提供的簡訊介面,來幫助我們實現向用戶手機發送驗證碼簡訊。這裡有一個非常好的第三方藉口。連線地址:http://www.xhsms.com/jiekou.aspx。他提供了一個很好的簡訊介面,簡單易用。下面是我自己參考寫的一段測試程式碼:
package com.im; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; public class SmsBase { private Integer x_eid = 0;//會員企業ID號,個人使用者為0 private String x_uid = "yourname";//會員賬號 private String x_pwd_md5 = "e10adc3949ba59abbe56e057f20f883e";//登陸密碼的MD5值32位 private Integer x_gate_id = 300;//傳送簡訊時通道ID,通道傳送失敗可以切換其它通道,無該值系統使用預設通道 public String SendSms(String mobile, String content) throws UnsupportedEncodingException{ Integer x_ac = 10;//傳送資訊 HttpURLConnection httpconn = null; String x_memo = content.trim();//傳送簡訊內容 StringBuilder sb = new StringBuilder(); sb.append("http://gateway.woxp.cn:6630/utf8/web_api/?x_eid="); sb.append(x_eid); sb.append("&x_uid=").append(x_uid); sb.append("&x_pwd_md5=").append(x_pwd_md5); sb.append("&x_ac=").append(x_ac); sb.append("&x_gate_id=").append(x_gate_id); sb.append("&x_target_no=").append(mobile); sb.append("&x_memo=").append(URLEncoder.encode(x_memo, "utf-8")); String result = "-20"; System.out.println(sb.toString()); try { URL url = new URL(sb.toString()); httpconn = (HttpURLConnection) url.openConnection(); BufferedReader rd = new BufferedReader(new InputStreamReader(httpconn.getInputStream())); result = rd.readLine(); rd.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally{ if(httpconn != null){ httpconn.disconnect(); httpconn = null; } } return result; } public static void main(String[] args) { String mobile="00000000000"; String content="Hello"; try { String result = new SmsBase().SendSms(mobile, content); System.out.println(result); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } }
網頁中引數詳細列表 | |||
編號 | 引數名稱 | 引數說明 | 是否必須 |
1 | x_eid | 會員企業ID號,個人使用者為0 | 是 |
2 | x_uid | 會員賬號 | 是 |
3 | x_pwd_md5 | 登陸密碼的MD5值 | 是 |
4 | x_new_pwd | 修改密碼時需要此引數。代表要變更的新密碼 | 否 |
5 | x_sub_id | 擴充套件子號碼,傳送簡訊時需要,根據通道是否支援子號碼擴充套件而提供 | 否 |
6 | x_target_no | 接受者號碼,多個號碼用“,”分開 | 否 |
7 | x_memo | 簡訊傳送內容.長度請參考通道說明(必須使用URL編碼) | 否 |
8 | x_send_time | 定時簡訊,格式YYYY-MM-DD HH:MM:SS,24小時制.值為空或無該引數代表立即傳送 | 否 |
9 | x_gate_id | 傳送簡訊時通道ID,通道傳送失敗可以切換其它通道,無該值系統使用預設通道 | 否 |
10 | x_ac | 本此提交的行為。比如是傳送簡訊。查詢餘額,引數值如下 | 是 |
引數x_ac(提交動作)值 | ||||
編號 | 值 | 說明 | ||
1 | 10 | 傳送簡訊。返回失敗或成功 | ||
2 | 12 | 長簡訊傳送,最多支援450字元傳送.64字每條計費.(請使用POST方式提交引數) | ||
3 | 20 | 查詢上行簡訊,分主動(客戶自已獲取)和被動(我們推送到指定地址)兩種方式 1.被動接收客戶.需要提交接收上行簡訊的URL地址(POST+XML)方式內容utf-8編碼 2.主動接收簡訊,直接呼叫AC=20即可. 被動接收提示: .NET檔案呼叫.需要在頭設定ValidateRequest="false"引數.否則返回HTTP 500伺服器內部錯誤 |
||
4 | 30 | 查詢當前戶剩餘條數 | ||
5 | 40 | 獲取指定通道的關鍵字遮蔽字串,傳送前先過濾關鍵字再提交 |
引數x_ac=10傳送簡訊時。返回值 | ||||
編號 | 值 | 說明 | ||
1 | 大於0 | 傳送成功,此次傳送成功條數 | ||
2 | -1 | 引數無效 | ||
3 | -2 | 通道不存在或者當前業務不支援此通道 | ||
4 | -3 | 定時格式錯誤 | ||
5 | -4 | 接收號碼無效 | ||
6 | -5 | 提交號碼個數超過上限,每個通道都有批量提交的上限.詳細值請參考通道說明 | ||
7 | -6 | 傳送簡訊內容長度不符合要求,參考通道要求長度 | ||
8 | -7 | 當前賬戶餘額不足 | ||
9 | -8 | 閘道器傳送簡訊時出現異常 | ||
10 | -9 | 使用者或者密碼沒輸入 | ||
11 | -10 | 企業ID或者會員賬號不存在 | ||
12 | -11 | 密碼錯誤 | ||
13 | -12 | 賬戶鎖定 | ||
14 | -13 | 閘道器狀態關閉 | ||
15 | -14 | 驗證使用者時執行異常 | ||
16 | -15 | 閘道器初始化失敗 | ||
17 | -16 | 當前IP已被系統遮蔽,可能是與您設定的接入IP不同或者是失敗次數太多 | ||
18 | -17 | 傳送異常 | ||
19 | -18 | 賬號未稽核 | ||
20 | -19 | 當前時間不允許此通道工作,主要對群發通道限制 | ||
21 | -20 | 傳輸金鑰未設定,請登陸平臺設定 | ||
22 | -21 | 提取金鑰異常 | ||
23 | -22 | 簽名驗證失敗 | ||
24 | -23 | 發現遮蔽關鍵字 | ||
25 | -100到-199 | 運營商返回失敗程式碼 |