asp中文數字驗證碼

2021-05-25 02:31:52 字數 2636 閱讀 5546

<%

response.buffer=true

numcode

function numcode()

response.expires = -1

response.addheader "pragma","no-cache"

response.addheader "cache-ctrol","no-cache"

dim znum,i,j

dim ados,ados1

randomize timer

生成隨機四位數字:

znum = cint(8999*rnd+1000)

傳遞給session

session("getcode") = znum

該for迴圈是將隨機數字放入乙個下標3的陣列,便於提供給後面的陣列變換

dim zimg(3),nstr

nstr=cstr(znum)

for i=0 to 3

zimg(i)=cint(mid(nstr,i+1,1))

next

dim pos

'定義二個 adodb.stream binary物件,作影象資料操作之用:

set ados=server.createobject("adodb.stream")

ados.mode=3

ados.type=1

ados.open

set ados1=server.createobject("adodb.stream")

ados1.mode=3

ados1.type=1

ados1.open

'載入0~9的數字資料10x100的,gbr的陣列資料,每個320位元組,10個數字3200byte

'bgr乙個點,10x10個點乙個數字,乙個點三個位元組(二進位制8位,16進製制 00~ff)

'一行10個點 30位元組 + 行結束標記 00 00 二位元組 32位元組,所以乙個10x100寬小於長的影象每個數字10x10是320位元組

'長大於寬的則無行結束標記 0000,直接是300位元組

這些就是bmp 24bit的資料詳細資訊了

『至於頭部,也很簡單,包含長寬,影象開始標記等等~~才54位元組,遠沒jpg什麼的複雜

ados1.write ados.read(1280)

'第乙個for迴圈,按生成的隨機數字順序從 10x100的數字陣列中提取出相應的四個數字

但是豎排的數字陣列

for i=0 to 3

ados.position=(9-zimg(i))*320

ados1.position=i*320

ados1.write ados.read(320)

next

'清空已經用完的ados的資料,調入替換新的影象頭54位元組的標頭檔案

pos=lenb(ados.read())

ados.position=pos '指定pos位置,即可再偏移54位元組的位置新增圖形資料

第二個for迴圈,進行數字的陣列變換,由豎排的塊轉換為橫排的數字塊

方法是隔320位元組抽取4次30位元組寫入ados物件,再抽取偏移第二行的影象資料

30位元組是因為bmp 寬大於長時無00 00的行結束標記

for i=0 to 9 step 1

for j=0 to 3

ados1.position=i*32+j*320

ados.position=pos+30*j+i*120

ados.write ados1.read(30)

next

next

ados.position=0

response.binarywrite直接向客戶端傳送影象資料

response.contenttype = "image/bmp"

response.binarywrite ados.read()

ados.close:set ados=nothing

ados1.close:set ados1=nothing

end function

%>

<%

c = request.form("c")

'如果可以輸入小寫的數字,請把下面三行注釋掉

for ii = 0 to 9

c = replace(c,cstr(ii),"")

next

c = replace(c,"零","0")

c = replace(c,"一","1")

c = replace(c,"二","2")

c = replace(c,"三","3")

c = replace(c,"四","4")

c = replace(c,"五","5")

c = replace(c,"六","6")

c = replace(c,"七","7")

c = replace(c,"八","8")

c = replace(c,"九","9")

if cstr(c) <> cstr(session("validatecode")) then

response.write ("驗證碼不正確")

else

'這裡處理表單

end if

%>

asp中文數字驗證碼

response.buffer true numcode function numcode response.expires 1response.addheader pragma no cache response.addheader cache ctrol no cache dim znum,i,...

asp中文數字驗證碼的實現

驗證碼在知碼網來說是乙個耳熟能詳的名詞了。今天 知碼網就來說說大寫數字驗證碼的實現方法吧。asp c request.form c 如果可以輸入小寫的數字,請把下面三行注釋掉 for ii 0 to 9 c replace c,cstr ii next c replace c,零 0 c repla...

數字驗證碼

private void picturebox1 click object sender,eventargs e 將str賦值給strcode,用於判斷輸入的驗證碼是否正確 strcode str 定義bmp影象的寬度等於picture的寬度減去5 int bmpwidth picturebox1....