如何使用ASP製作驗證驗證碼圖片

來源:互聯網
上載者:User
驗證碼 一般,你可以看到一些驗證碼圖片即是如此/

為什麼需要驗證碼

有效防止某個駭客對某一個特定註冊使用者,用特定程式暴力破解方式進行不斷的登陸嘗試,即防止暴力註冊/窮取密碼/伺服器拒絕等可能影響網站正常啟動並執行行為。

驗證碼的運行機制是什麼

在隨機產生驗證碼的同時產生了一Session,然後通過表單遞交資料與Session中儲存的驗證碼進行比較,正確即驗證碼通過,否則出錯提示。


1,XBM檔案

這是一個很簡單的顯示XBM圖片的例子,數字掩碼是主要。

<%@ Language=javascript %>
<%
//一個最簡單的例子
//可廣泛應用於計數器、時鐘等任何需要動態產生圖形的地方
//通過改變ContentType的值,比如改為 "image/gif"可以作出更漂亮的圖形

Response.ContentType ="image/x-xbitmap";
Response.Write ("#define counter_width 8\r\n"); //圖形寬
Response.Write ("#define counter_height 10\r\n");//圖形高
Response.Write ("static unsigned char counter_bits[]={\r\n");
Response.Write ("0x3c,0x66,0x60,0x60,0x30,0x18,0x0c,0x06,0x06,0x7e");//2的掩碼
Response.Write ("};\r\n");

%>

2,黑白XBM隨機驗證碼(原作者:張三瘋)

xbm.asp:主要作用,隨機顯示四位驗證碼,同時產生Session("validateCode")

<!--#include file="numcode.asp"-->
<%
Response.Buffer = True
With Response
.Expires = -1
.AddHeader "Pragma","no-cache"
.AddHeader "cache-ctrol","no-cache"
End With

Dim num
Randomize
num = Int(7999 * Rnd + 2000)
Session("validateCode") = num

Dim Image
Dim Width, Height
Dim digtal
Dim Length
Dim sort
Dim hc
Length = 4
hc = chr(13) & chr(10)

Redim sort(Length)

digital = ""
For I = 1 To Length - Len(num)
digital = digital & "0"
Next
For I = 1 To Len(num)
digital = digital & Mid(num, I, 1)
Next
For I = 1 To Len(digital)
sort(I) = Mid(digital, I, 1)
Next
Width = 8 * Len(digital)
Height = 10

Response.ContentType = "image/x-xbitmap"

Image = "#define counter_width " & Width & hc
Image = Image & "#define counter_height " & Height & hc
Image = Image & "static unsigned char counter_bits[] = {" & hc

For I = 1 To Height
For J = 1 To Length
Image = Image & a(sort(J),I) & ","
Next
Next

Image = Left(Image, Len(Image) - 1)
Image = Image & "};" & hc

Response.Write Image
%>


其中包含檔案<!--#include file="numcode.asp"-->的主要內容就是數位掩碼

numcode.asp

<%
Dim a(10,10)

a(0,1) = "0x3c" '數字0
a(0,2) = "0x66"
a(0,3) = "0xc3"
a(0,4) = "0xc3"
a(0,5) = "0xc3"
a(0,6) = "0xc3"
a(0,7) = "0xc3"
a(0,8) = "0xc3"
a(0,9) = "0x66"
a(0,10)= "0x3c"

a(1,1) = "0x18" '數字1
a(1,2) = "0x1c"
a(1,3) = "0x18"
a(1,4) = "0x18"
a(1,5) = "0x18"
a(1,6) = "0x18"
a(1,7) = "0x18"
a(1,8) = "0x18"
a(1,9) = "0x18"
a(0,10)= "0x7e"

a(2,1) = "0x3c" '數字2
a(2,2) = "0x66"
a(2,3) = "0x60"
a(2,4) = "0x60"
a(2,5) = "0x30"
a(2,6) = "0x18"
a(2,7) = "0x0c"
a(2,8) = "0x06"
a(2,9) = "0x06"
a(2,10)= "0x7e"

a(3,1) = "0x3c" '數字3
a(3,2) = "0x66"
a(3,3) = "0xc0"
a(3,4) = "0x60"
a(3,5) = "0x1c"
a(3,6) = "0x60"
a(3,7) = "0xc0"
a(3,8) = "0xc0"
a(3,9) = "0x66"
a(3,10)= "0x38"

a(4,1) = "0x38" '數字4
a(4,2) = "0x3c"
a(4,3) = "0x36"
a(4,4) = "0x33"
a(4,5) = "0x33"
a(4,6) = "0x33"
a(4,7) = "0xff"
a(4,8) = "0x30"
a(4,9) = "0x30"
a(4,10)= "0xfe"

a(5,1) = "0xfe" '數字5
a(5,2) = "0xfe"
a(5,3) = "0x06"
a(5,4) = "0x06"
a(5,5) = "0x3e"
a(5,6) = "0x60"
a(5,7) = "0xc0"
a(5,8) = "0xc3"
a(5,9) = "0x66"
a(5,10)= "0x3c"

a(6,1) = "0x60" '數字6
a(6,2) = "0x30"
a(6,3) = "0x18"
a(6,4) = "0x0c"
a(6,5) = "0x3e"
a(6,6) = "0x63"
a(6,7) = "0xc3"
a(6,8) = "0xc3"
a(6,9) = "0x66"
a(6,10) ="0x3c"

a(7,1) = "0xff" '數字7
a(7,2) = "0xc0"
a(7,3) = "0x60"
a(7,4) = "0x30"
a(7,5) = "0x18"
a(7,6) = "0x18"
a(7,7) = "0x18"
a(7,8) = "0x18"
a(7,9) = "0x18"
a(7,10)= "0x18"

a(8,1) = "0x3c" '數字8
a(8,2) = "0x66"
a(8,3) = "0xc3"
a(8,4) = "0x66"
a(8,5) = "0x3c"
a(8,6) = "0x66"
a(8,7) = "0xc3"
a(8,8) = "0xc3"
a(8,9) = "0x66"
a(8,10)= "0x3c"

a(9,1) = "0x3c" '數字9
a(9,2) = "0x66"
a(9,3) = "0xc3"
a(9,4) = "0xc3"
a(9,5) = "0x66"
a(9,6) = "0x3c"
a(9,7) = "0x18"
a(9,8) = "0x0c"
a(9,9) = "0x06"
a(9,10)= "0x03"
%>


如下進行的引用,儲存為img.asp

<%
yznum=trim(request.form("yznum"))
if yznum<>"" then
if int(Session("validateCode"))=int(yznum) then
response.write("true")
else
response.write("false")
end if
else
response.write("你沒有輸入驗證碼")
end if
%>

<form action=img.asp method=post>
<img src="xbm.asp">
<input name="yznum">
<input type=submit name=submit1 value=GOIT>
</form>



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。