動(dòng)網(wǎng)驗(yàn)證碼出現(xiàn)的問題及解決方法_動(dòng)網(wǎng)論壇教程
本人在論壇調(diào)試中出現(xiàn)的各種驗(yàn)證碼問題及解決方法
1、把字母加入驗(yàn)證碼字符集里,可是怎么無法通過驗(yàn)證???
如:Const cCharSet = "0123456789ABC"
這是因?yàn)樵贒v_ClsMain.asp中存在一段有問題的代碼,導(dǎo)致字母的驗(yàn)證碼不能正確判斷所致
這個(gè)問題應(yīng)該在7.1的時(shí)候就已經(jīng)解決了呀。
CodeStr=Lcase(Trim(Request("CodeStr")))
這段代碼令得讀來的信息被小寫了
而下一段代碼:
If CStr(Session("GetCode"))=CStr(CodeStr) And CodeStr<>"" Then
比較的時(shí)候卻沒有把Session的內(nèi)容小寫化
可以在兩個(gè)地方修改(二選其一,看個(gè)人愛好)
一、改Dv_ClsMain.asp
If CStr(Session("GetCode"))=CStr(CodeStr) And CodeStr<>"" Then
改為:
If CStr(LCase(Session("GetCode")))=CStr(CodeStr) And CodeStr<>"" Then
二、改Dv_GetCode.asp
Session(pSN) = DigtalStr '記錄入Session
改為:
Session(pSN) = LCase(DigtalStr) '記錄入Session
2、【動(dòng)網(wǎng)驗(yàn)證碼字母矢量庫的擴(kuò)展】
動(dòng)網(wǎng)7.1與7.0相比,在驗(yàn)證碼上作了大改動(dòng)。7.0使用的是一個(gè)現(xiàn)成的MBP圖庫,內(nèi)含0-9十個(gè)數(shù)字的圖形信息(每個(gè)圖形都是10*10像數(shù))。因?yàn)檫@十個(gè)數(shù)字毫無變化,破解的起來還是比較容易的。
到了7.1,至少在以下方面有了變化:一是用失量庫代替點(diǎn)陣庫,這樣可以產(chǎn)生任意尺寸的驗(yàn)證碼圖片;二是字符串長度不僅局限于4個(gè)字節(jié),可以使用任意長度,三是增加了變形和噪點(diǎn)處理,即使同一個(gè)字符重復(fù)出現(xiàn),也可以產(chǎn)生不同的圖片,四是字符集不僅僅局限在十個(gè)數(shù)字,而可以擴(kuò)展到其它字符,甚至連漢字也不在話下。
但是,動(dòng)網(wǎng)的程序中只提供了10個(gè)數(shù)字和“ABCD”四個(gè)字母的失量圖庫,并在字母“A”失量庫開始前留下這樣一句注釋:“以下為字母的矢量動(dòng)作,有興趣的可以繼續(xù)”,也就是說如果你不動(dòng)手?jǐn)U展,就只能使用由這14個(gè)字符組成的字符集。
本人懷著對(duì)動(dòng)網(wǎng)的無限敬仰和濃厚興趣,動(dòng)手?jǐn)U展了這個(gè)失量庫,將26個(gè)大寫字母弄全了。
在動(dòng)手之前,有個(gè)問題必須先說明:一量引用字母,就必須正視數(shù)字“0”與字母“O”、數(shù)字“6”與字母“G”因?yàn)樽中蜗嘟a(chǎn)生的影響。字母“G”我可以設(shè)計(jì)得跟“6”不一致,但是字母“O”怎么設(shè)計(jì)都是一個(gè)圓圈,于是只好改它的數(shù)字“0”了——給它加上一條右上至左下的斜線。于是,數(shù)字“0”的失量庫完整如下:
'==========代碼開始==========
CDGen_SetDirection -60' 逆時(shí)針60度(相對(duì)于垂直線)
CDGen_FowardDraw -0.7' 反方向繪制0.7個(gè)單位
CDGen_SetDirection -60' 逆時(shí)針60度
CDGen_FowardDraw -0.7' 反方向繪制0.7個(gè)單位
CDGen_SetDirection 120' 順時(shí)針120度
CDGen_FowardDraw 1.5' 繪制1.5個(gè)單位
CDGen_SetDirection -60' 逆時(shí)針60度
CDGen_FowardDraw 0.7' 繪制0.7個(gè)單位
CDGen_SetDirection -60' 順時(shí)針120度
CDGen_FowardDraw 0.7' 繪制0.7個(gè)單位
CDGen_Close 0' 封閉當(dāng)前筆與第0筆(0開始)
'添加一條斜線,以免與字母O混淆()
CDGen_MoveToMiddle 2, 100' 移動(dòng)畫筆的位置到第3筆(0開始)的結(jié)尾處
CDGen_CloseToMiddle 0, 0' 將當(dāng)前畫筆位置與第1筆(0開始)的開端封閉
'==========代碼結(jié)束==========
在設(shè)計(jì)字母“E”的時(shí)候,考慮到三條水平線,要給它加上角度隨機(jī)量,隨機(jī)量很容易計(jì)算,如我要產(chǎn)生“正負(fù)20度”只要“20 - Rnd * 40”即可。但是原有的“CDGen_SetDirection”函數(shù)都是在以往的角度基礎(chǔ)上旋轉(zhuǎn)的,這樣在畫第二、三條水平線的時(shí)候角度會(huì)受前面的影響,比如如果三次都是正20,那最后一條線將產(chǎn)生60度的隨機(jī)量,于是我增加了一個(gè)函數(shù)“CDGen_SetDirectionFormZero”,它的作用是以0度為基準(zhǔn)進(jìn)行隨機(jī)量的設(shè)定,代碼如下:
'==========代碼開始==========
Sub CDGen_SetDirectionFormZero(nAngle)
'按指定角度設(shè)定畫筆方向,與CDGen_SetDirection的區(qū)別是以0度為基準(zhǔn)
nAngle = Sgn(nAngle) * (Abs(nAngle) - nAngleRandom + Rnd * nAngleRandom * 2) / 180 * 3.1415926
DirX = - Sin(nAngle)
DirY = Cos(nAngle)
End Sub
'==========代碼結(jié)束==========
下面就可以去補(bǔ)充其它字母的失量庫了,代碼如下:
'==========代碼開始==========
Case "E"
CDGen_SetDirection -(Rnd * 20 - 10)
CDGen_FowardDraw 1
CDGen_MoveToMiddle 0, 0
CDGen_SetDirectionFormZero -(110 - Rnd * 40)
CDGen_FowardDraw 0.7
CDGen_MoveToMiddle 0, 50
CDGen_SetDirectionFormZero -(110 - Rnd * 40)
CDGen_FowardDraw 0.5
CDGen_MoveToMiddle 0, 100
CDGen_SetDirectionFormZero -(110 - Rnd * 40)
CDGen_FowardDraw 0.9
Case "F"
CDGen_SetDirection -(Rnd * 20 - 10)
CDGen_FowardDraw 1
CDGen_MoveToMiddle 0, 0
CDGen_SetDirectionFormZero -(110 - Rnd * 40)
CDGen_FowardDraw 0.7
CDGen_MoveToMiddle 0, 50
CDGen_SetDirectionFormZero -(110 - Rnd * 40)
CDGen_FowardDraw 0.5
Case "G"
CDGen_SetDirection -60
CDGen_FowardDraw -0.7
CDGen_SetDirection -60
CDGen_FowardDraw -0.7
CDGen_SetDirection 120
CDGen_FowardDraw 1.5
CDGen_SetDirection 120
CDGen_FowardDraw -0.7
CDGen_SetDirection 120
CDGen_FowardDraw 0.7
CDGen_SetDirection -60
CDGen_FowardDraw 0.5
CDGen_SetDirection 90
CDGen_FowardDraw 0.4
CDGen_MoveToMiddle 6, 0
CDGen_SetDirection 180
CDGen_FowardDraw 0.4
Case "H"
CDGen_SetDirection -(Rnd * 20 - 10)
CDGen_FowardDraw 1
CDGen_MoveToMiddle 0, 50
CDGen_SetDirection -90
CDGen_FowardDraw 1
CDGen_MoveToMiddle 1, 100
CDGen_SetDirection -90
CDGen_FowardDraw 0.5
CDGen_MoveToMiddle 1, 100
CDGen_SetDirection 180
CDGen_FowardDraw 0.5
Case "I"
CDGen_SetDirection -(Rnd * 20 - 10)
CDGen_FowardDraw 1
CDGen_MoveToMiddle 0, 0
CDGen_SetDirection -90
CDGen_FowardDraw 0.2
CDGen_MoveToMiddle 0, 0
CDGen_SetDirection 180
CDGen_FowardDraw 0.2
CDGen_MoveToMiddle 0, 100
CDGen_FowardDraw 0.2
CDGen_MoveToMiddle 0, 100
CDGen_SetDirection 180
CDGen_FowardDraw 0.2
Case "J"
CDGen_SetDirection -90
CDGen_FowardDraw 0.4
CDGen_MoveToMiddle 0, 50
CDGen_SetDirection 90
CDGen_FowardDraw 0.6
CDGen_SetDirection 60
CDGen_FowardDraw 0.5
CDGen_SetDirection 120
CDGen_FowardDraw 0.5
Case "K"
CDGen_SetDirection -(Rnd * 20 - 10)
CDGen_FowardDraw 1
CDGen_MoveToMiddle 0, 50
CDGen_SetDirection -60
CDGen_FowardDraw 0.6
CDGen_MoveToMiddle 0, 50
CDGen_SetDirection -60
CDGen_FowardDraw 0.6
Case "L"
CDGen_SetDirection -90
CDGen_FowardDraw 0.2
CDGen_MoveToMiddle 0, 50
CDGen_SetDirectionFormZero -(Rnd * 20 - 10)
CDGen_FowardDraw 1
CDGen_SetDirection -(110 - Rnd * 40)
CDGen_FowardDraw 0.8
CDGen_SetDirectionFormZero 0
CDGen_FowardDraw -0.3
Case "M"
CDGen_SetDirection 0
CDGen_FowardDraw -1
CDGen_SetDirection -30
CDGen_FowardDraw 0.5
CDGen_SetDirection 60
CDGen_FowardDraw -0.5
CDGen_SetDirection -30
CDGen_FowardDraw 1
Case "N"
CDGen_SetDirection 0
CDGen_FowardDraw -1
CDGen_SetDirection -45
CDGen_FowardDraw 1.4
CDGen_SetDirection 45
CDGen_FowardDraw -1
Case "O"
CDGen_SetDirection -60
CDGen_FowardDraw -0.7
CDGen_SetDirection -60
CDGen_FowardDraw -0.7
CDGen_SetDirection 120
CDGen_FowardDraw 1.5
CDGen_SetDirection -60
CDGen_FowardDraw 0.7
CDGen_SetDirection -60
CDGen_FowardDraw 0.7
CDGen_Close 0
Case "P"
CDGen_SetDirection 0
CDGen_FowardDraw -1
CDGen_SetDirection -60
CDGen_FowardDraw 0.5
CDGen_SetDirection 60
CDGen_FowardDraw 0.5
CDGen_CloseToMiddle 0, 50
Case "Q"
CDGen_SetDirection -60
CDGen_FowardDraw -0.7
CDGen_SetDirection -60
CDGen_FowardDraw -0.7
CDGen_SetDirection 120
CDGen_FowardDraw 1.5
CDGen_SetDirection -60
CDGen_FowardDraw 0.7
CDGen_SetDirection -60
CDGen_FowardDraw 0.7
CDGen_Close 0
CDGen_MoveToMiddle 4, 100
CDGen_SetDirectionFormZero -45
CDGen_FowardDraw 0.7
CDGen_MoveToMiddle 4, 100
CDGen_SetDirection 180
CDGen_FowardDraw 0.7
Case "R"
CDGen_SetDirection 0
CDGen_FowardDraw -1
CDGen_SetDirection -80
CDGen_FowardDraw 0.5
CDGen_SetDirection 60
CDGen_FowardDraw 0.5
CDGen_CloseToMiddle 0, 50
CDGen_SetDirectionFormZero -45
CDGen_FowardDraw 0.7
Case "S"
CDGen_SetDirection -45
CDGen_FowardDraw -0.5
CDGen_SetDirection -90
CDGen_FowardDraw -0.5
CDGen_SetDirection 90
CDGen_FowardDraw 1
CDGen_SetDirection 90
CDGen_FowardDraw 0.5
CDGen_SetDirection 90
CDGen_FowardDraw 0.5
Case "T"
CDGen_SetDirection -90
CDGen_FowardDraw 0.8
CDGen_MoveToMiddle 0, 50
CDGen_SetDirection 90
CDGen_FowardDraw 1
CDGen_MoveToMiddle 0, 0
CDGen_SetDirection 30
CDGen_FowardDraw 0.5
CDGen_MoveToMiddle 0, 100
CDGen_SetDirection -60
CDGen_FowardDraw 0.5
Case "U"
CDGen_FowardDraw 1
CDGen_SetDirection -60
CDGen_FowardDraw 0.6
CDGen_SetDirection -60
CDGen_FowardDraw 0.6
CDGen_SetDirection -60
CDGen_FowardDraw 1
Case "V"
CDGen_SetDirection -30
CDGen_FowardDraw 1.5
CDGen_SetDirection 60
CDGen_FowardDraw -1.5
Case "W"
CDGen_SetDirection -30
CDGen_FowardDraw 1.5
CDGen_SetDirection 60
CDGen_FowardDraw -1
CDGen_SetDirection -60
CDGen_FowardDraw 1
CDGen_SetDirection 60
CDGen_FowardDraw -1.5
Case "X"
CDGen_SetDirection -45
CDGen_FowardDraw 1.4
CDGen_MoveToMiddle 0, 50
CDGen_SetDirection 90
CDGen_FowardDraw 0.7
CDGen_MoveToMiddle 0, 50
CDGen_FowardDraw -0.7
Case "Y"
CDGen_SetDirection -30
CDGen_FowardDraw 0.5
CDGen_SetDirection 60
CDGen_FowardDraw -0.5
CDGen_MoveToMiddle 0, 100
CDGen_SetDirection -30
CDGen_FowardDraw 0.5
Case "Z"
CDGen_SetDirection -90
CDGen_FowardDraw 1
CDGen_SetDirection -45
CDGen_FowardDraw -1.4
CDGen_SetDirection 45
CDGen_FowardDraw 1
3、動(dòng)網(wǎng)BBS8.0驗(yàn)證碼看不清楚的修改方法
用記事本打開Dv_GetCode.asp文件,把上面幾行的個(gè)別數(shù)值修改為(紅色為修改后的,其他的不變):
Const nMaxSaturation = 100 ' 最大色彩飽和度
Const nBlankNoisyDotOdds = 0' 空白處噪點(diǎn)率
Const nColorNoisyDotOdds = 0 ' 有色處噪點(diǎn)率
Const nCharCount = 4 ' 產(chǎn)生的字符個(gè)數(shù)
Const nPixelWidth = 20 ' 單個(gè)字符位圖的寬度
Const nPixelHeight = 20 ' 單個(gè)字符位圖的高度
Const nColorHue = 220 ' 顯示驗(yàn)證碼的色調(diào)(-1表示隨機(jī)色調(diào), -2表示灰度色調(diào))
Const nAngleRandom = 0 ' 角度隨機(jī)量
Const nLengthRandom = 0 ' 長度隨機(jī)量(百分比)
希望對(duì)你有用!
- 動(dòng)網(wǎng)論壇首頁調(diào)用詳解
- 動(dòng)網(wǎng)論壇『用戶控制面板』中『我的展區(qū)』有錯(cuò)誤的解決方法
- 動(dòng)網(wǎng)論壇自定義組無法固定帖子的解決方法
- 動(dòng)網(wǎng)論壇7.0與6.x同在一個(gè)服務(wù)器上出現(xiàn)沖突的問題解決辦法
- 動(dòng)網(wǎng)論壇在線圖例無法顯示版主的解決辦法
- 動(dòng)網(wǎng)論壇關(guān)于設(shè)置“綠色醒目”錯(cuò)誤的解決方法
- 動(dòng)網(wǎng)論壇區(qū)固頂圖標(biāo)不顯示的解決辦法
- 動(dòng)網(wǎng)論壇上傳文件不能超過200k問題解決方法
- 動(dòng)網(wǎng)論壇對(duì)付論壇群發(fā)軟件的方法
- 動(dòng)網(wǎng)論壇支付寶購買論壇點(diǎn)卷問題解決方案
- 動(dòng)網(wǎng)論壇首頁底部“在線圖例”管理員等名稱的詳細(xì)修改方法
- 動(dòng)網(wǎng)論壇的兩個(gè)小技巧
動(dòng)網(wǎng)論壇教程教程Rss訂閱Cms教程搜索
動(dòng)網(wǎng)論壇教程推薦
- 動(dòng)網(wǎng)論壇『用戶控制面板』中『我的展區(qū)』有錯(cuò)誤的解決方法
- 動(dòng)網(wǎng)論壇在線圖例無法顯示版主的解決辦法
- 動(dòng)網(wǎng)論壇首頁底部“在線圖例”管理員等名稱的詳細(xì)修改方法
- 動(dòng)網(wǎng)驗(yàn)證碼出現(xiàn)的問題及解決方法
- Dvbbs8.2.0 rc1動(dòng)網(wǎng)論壇模板機(jī)制說明
- 動(dòng)網(wǎng)論壇對(duì)付論壇群發(fā)軟件的方法
- 動(dòng)網(wǎng)論壇7.0與6.x同在一個(gè)服務(wù)器上出現(xiàn)沖突的問題解決辦法
- Dvbbs_8.2.0_RC1 首頁FLASH調(diào)用操作說明
- 動(dòng)網(wǎng)論壇后臺(tái)功能詳細(xì)說明
- 動(dòng)網(wǎng)論壇自定義組無法固定帖子的解決方法
- 相關(guān)鏈接:
- 教程說明:
動(dòng)網(wǎng)論壇教程-動(dòng)網(wǎng)驗(yàn)證碼出現(xiàn)的問題及解決方法
。