メール認証コードの取得
12704 ワード
一般的にユーザーがログインする時、携帯電話番号を選んでログインするので、携帯電話の認証コードを取得するのは避けられない.フロントエンドページに認証コードbuttonを設定してクリックすると、カウントダウン60 sを実現し、認証コードを送信する.
設計構造:バックグラウンドランダム6ビット検証コードは検証コードをsessionに格納し、サードパーティインタフェースを呼び出して送信検証コードをバックグラウンドでsessionを取り出し、入力した検証コードと一致させる.
必要なjarパッケージはcommons-codec-1.4です.jar commons-httpclient–3.1.jar commons-loging-1.1.jar
index.jsp
サードパーティインタフェースを呼び出して情報を送信
設計構造:バックグラウンドランダム6ビット検証コードは検証コードをsessionに格納し、サードパーティインタフェースを呼び出して送信検証コードをバックグラウンドでsessionを取り出し、入力した検証コードと一致させる.
必要なjarパッケージはcommons-codec-1.4です.jar commons-httpclient–3.1.jar commons-loging-1.1.jar
index.jsp
"java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
"com.yzm.SMSUtil" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title heretitle>
<style type="text/css">
button {
background: #F0F0F0 repeat-x;
padding-top: 3px;
border-top : 1px solid #708090;
border-right: 1px solid #708090;
border-bottom: 1px solid #708090;
border-left: 1px solid #708090;
width: auto;
line-height: 12pt;
font-size : 10pt;
cursor: hand;
font-size: 10pt;
border-top: 1px solid #708090;
}
style>
<script type="text/javascript">
var countdown=60;
var userphone=document.getElementById("userphone");
function settime(obj) {
if (countdown == 0) {
obj.removeAttribute("disabled");
obj.value=" ";
countdown = 60;
return;
} else {
obj.setAttribute("disabled", true);
obj.value=" (" + countdown + ")";
countdown--;
setTimeout(function() {
settime(obj) }
,1000)
}
}
script>
head>
<body>
<form action="yzmServlet" method="post">
:<input type="text" name="userphone" id="userphone"><br>
<input type="button" name="btnSendCode" id="btnSendCode" value=" " onclick="settime(this)"><br>
String vcode="";
for(int i=0;i<6;i++){
vcode=vcode+(int)(Math.random()*9);
}
SMSUtil sms=new SMSUtil();
sms.sendSMS(vcode);
session.setAttribute("vcode", vcode);
System.out.println(vcode);
%>
:<input type="password" name="password" id="password"><br>
<input type="text" name="yzm" id="yzm">
<input type="submit" value=" ">
form>
body>
html>
サードパーティインタフェースを呼び出して情報を送信
package com.yzm;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
public class SMSUtil {
public void sendSMS(String vcode) {
try {
HttpClient client = new HttpClient();
PostMethod post = new PostMethod("http://gbk.sms.webchinese.cn");
post.addRequestHeader("Content-Type",
"application/x-www-form-urlencoded;charset=gbk");
// uid: id
// key:
// smsMob:
// smsText:
NameValuePair[] data = { new NameValuePair("Uid", " "),
new NameValuePair("Key", " "),
new NameValuePair("smsMob", "1882959****"),
new NameValuePair("smsText", " "+vcode) };
post.setRequestBody(data);
client.executeMethod(post);
Header[] headers = post.getResponseHeaders();
int statusCode = post.getStatusCode();
System.out.println("statusCode:" + statusCode);
for (Header h : headers) {
System.out.println(h.toString());
}
String result = new String(post.getResponseBodyAsString().getBytes(
"gbk"));
System.out.println(result);
post.releaseConnection();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}