注册 登录
编程论坛 VB6论坛

如何用VB编写随机验证码

猪肉 发布于 2007-03-08 13:22, 4861 次点击
我想在VB编写一个可以随机生成的如网站注册或登陆时都需要输入成的随机验证码,
验证码可以由26个字母大小写 A TO Z,0 TO 9 构成,验证码生成在一个 text 文本框中,而且每隔30秒就会自动在文本框中随机生成并更改原来的验证码,VB能不能做到啊。



18 回复
#2
purana2007-03-08 13:28
可以的.
#3
PcrazyC2007-03-08 15:13

这个想法不错,可以解决自动登陆那些验证码为英文字母或数字的网站,这样不要随机了好,用循环,一般验证码就几位,几秒种就搞定了

#4
猪肉2007-03-08 23:41

有没有人愿意给出这个随机出验证码的源码,感谢。。。

#5
Kendy1234562007-03-09 10:04
1。构成验证码的字符集放在数组里
2。定义验证码的位数
3。使用一个时间间隔为30秒的timer

全局变量:
dim Size as integer '验证码位数 一般是四位
dim a(36) as string

timer的代码:

dim i as integer,j as integer, VerifyString as string

VerifyString = ""
for i = 1 to Size
Randomize()
j = Int((36 * Rnd()) + 1)
VerifyString = VerifyString + a(j)
next i

TextBox1.Text = VerifyString
#6
PcrazyC2007-03-09 10:27
使用一个时间间隔为30秒的timer
那人都疯了,30微秒吧
#7
purana2007-03-09 10:29
30秒挺正常的..
你的30微秒..你看都没看到清楚.又换了..你觉得很有意思?..
#8
PcrazyC2007-03-09 11:02
我以为是去搞自动登陆网站,所以快点好,可能是我理解错了楼主的意思
#9
猪肉2007-03-09 14:33
老大,不行啊,能不能把源码提供下载。。万分感谢
#10
PcrazyC2007-03-09 15:01
a(36) 你给他赋值没有?没有就赋值
#11
Kendy1234562007-03-09 15:51

Size a(36)都要赋值啊
size =4

j = 1
for i = asc("A") to ASC("Z")
a(j) = chr(i)
j =j+1
next i
for i = asc("0") to asc("9")
a(j) = chr(i)
j = j+1
next i

这段加在代码最初部分执行

这东西随手写的。。。哪里有什么源码下载。。。

#12
猪肉2007-03-09 17:53
老大不行啊,我测试了不行,能不能把代码整理一下发到论坛上给我啊。谢谢

[此贴子已经被作者于2007-3-9 17:54:39编辑过]


#13
猪肉2007-03-10 12:14

大家帮帮忙啊,小弟需要这程序急用啊。

#14
猪肉2007-03-10 23:55
有没有人愿意帮我把完整的源码写出来啊,救命啊。。。。
#15
redice2007-03-11 15:11
回复:(猪肉)如何用VB编写随机验证码

只有本站会员才能查看附件,请 登录

兄弟,你看这样行吗?
Private Sub Form_Load()
Dim i As Integer
Dim j As Integer
j = 0
For i = 48 To 57 '将0-9存放于数组checnum的1-10号元素
j = j + 1
checknum(j) = Chr(i)
Next
For i = 65 To 90 '将A-Z存放于数组checnum的11-36号元素
j = j + 1
checknum(j) = Chr(i)
Next
For i = 97 To 122 '将a-z存放于数组checnum的37-62号元素
j = j + 1
checknum(j) = Chr(i)
Next
produce
End Sub
Private Function produce() '产生四位验证码,可以根据需要扩充
Dim str As String
str = checknum(Int(62 * Rnd + 1)) & checknum(Int(62 * Rnd + 1)) & checknum(Int(62 * Rnd + 1)) & checknum(Int(62 * Rnd + 1))
Text1.Text = str
End Function

Private Sub Timer1_Timer() '时间间隔为1000ms
produce
End Sub

#16
猪肉2007-03-11 23:48
谢谢版主的支持,十分感谢。。。。。
#17
mars9142008-04-12 16:54
用VB编写随机验证码
多谢啦:redice
不错的方法,容易实现,理解、、、、、

只有本站会员才能查看附件,请 登录


[[it] 本帖最后由 mars914 于 2008-4-12 16:55 编辑 [/it]]
#18
mars9142008-04-13 17:26
用VB编写随机验证码
不过要用图片形式显示出来就不容易了,请哪位高手赐教、、、、
#19
admin738962014-05-22 15:39
Private Sub Form_Load()
Dim conn As New ADODB.Connection
Dim connectionstring As String
connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "D:\glxt.mdb;Persist Security Info=False"

End Sub

Private Sub Image1_Click()
Image1.ZOrder 0  ''0
End Sub

Private Sub Picture1_Click()
Dim vCode As String
Dim i, vc, px, py As Long
Dim r, g, b As Byte
Randomize
vc = CLng(8999 * Rnd + 1000)
vCode = vc
Picture1.Cls
Picture1.Print vc
For i = 0 To 2000
px = CLng(Picture1.Width * Rnd)
py = CLng(Picture1.Height * Rnd)
r = CByte(255 * Rnd)
g = CByte(255 * Rnd)
b = CByte(255 * Rnd)
Picture1.Line (px, py)-(px + 1, py + 1), RGB(r, g, b)
Next
End Sub
1