以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  [转帖]asp中使用图片验证码的方法  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=14795)


--  作者:Qr
--  发布时间:2/25/2005 2:10:00 PM

--  [转帖]asp中使用图片验证码的方法

作者:Loster(OICQ:181306) 如果转载,请勿去掉此行,谢谢。

现在许多网站的登陆都需要输入验证码,验证码一般都是以图片的形式显示的。这样一来,能提高登陆的安全性,防止暴力猜解密码。为何要用图片显示验证码?试想,如果只是生成文本的验证码,破解人可以利用类似于小偷的技术,先把你这个页面读取,然后分析出验证码,最后进行暴力猜解。这样的话,验证码就没有任何实际意义了。废话少说,下面我就开始说一说怎样实现asp中显示图片验证码。

要实现asp中显示图片验证码,首先需要以下三个文件:

GetCode.asp (用于生成图片验证码)

head.fix (图片头)

body.fix (图片主体)

你也许会问,这些文件我从哪里可以得到呢?不用着急,这些文件在dvbbs7.0里面有。我也是在研究了dvbbs7.0里面的验证码之后才学会如何使用图片验证码的。

首先看getcode.asp文件,里面有几行是这样的:

Ados.LoadFromFile(Server.mappath("body.Fix"))
Ados1.write Ados.read(1280)
For i=0 To 3
Ados.Position=(9-zimg(i))*320
Ados1.Position=i*320
Ados1.write ados.read(320)
Next
Ados.LoadFromFile(Server.mappath("head.fix"))

看到body.fix和head.fix了吗?这里指的是他们与getcode.asp的相对位置。如果他们三个文件在一个目录里面,就按照以上的写法就可以了。如果不是,就需要写出他俩与getcode.asp的相对位置。比如:如果getcode.asp在根目录下,body.fix&head.fix在根目录下的test文件夹下,那么,上面的代码就需改为:

Ados.LoadFromFile(Server.mappath("test/body.Fix"))
Ados1.write Ados.read(1280)
For i=0 To 3
Ados.Position=(9-zimg(i))*320
Ados1.Position=i*320
Ados1.write ados.read(320)
Next
Ados.LoadFromFile(Server.mappath("test/head.fix"))

这样,才能保证图片显示的正常。

如何调用?

很简单,只需要这样:

<img src=getcode.asp border=0>

即可。

每当在调用getcode.asp之后,会自动生成一个session,这个session存储着和验证图片上显示的一样的四位数字。你只需把接收到的验证码和这个session比较,然后判断验证码是否输入正确。当然,最好像这样:

If Cstr(Trim(接收的变量名))=Cstr(Session("GetCode")) Then

Response.Write ("OK!")

Else

Response.Write ("No!")

End If

呵呵,至此,啰嗦完毕。希望你在看完本文后有所启发。当然,本人水平有限,文中难免出现错误,欢迎大家指正。

有人可能要问,图片能不能修改啊,答案是肯定的,网上有相关文章,你可以去查查。

附:http://www.loster.net/aspfile/getcode.rar getcode.asp,head.fix,body.fix文件压缩包


--  作者:雨梦儿
--  发布时间:3/4/2005 1:40:00 PM

--  
学习中
--  作者:tot
--  发布时间:3/11/2005 12:10:00 PM

--  
我看看
--  作者:inzaghiguo
--  发布时间:4/20/2005 11:02:00 AM

--  
好好学习!
--  作者:xmzhy
--  发布时间:4/25/2005 3:11:00 PM

--  
学习
--  作者:Rsvicky
--  发布时间:11/30/2005 10:43:00 AM

--  
请问,上面的接收的变量名应该选用哪个呢?菜鸟不会,请各大虾指教。
--  作者:Rsvicky
--  发布时间:11/30/2005 10:44:00 AM

--  
就是判断验证码是否输入正确,我应该如何编写这部分的代码。
--  作者:aapulse
--  发布时间:2/27/2006 1:56:00 PM

--  
正在看....
--  作者:shenglipaopao
--  发布时间:3/20/2006 9:55:00 PM

--  
怎么下载不了啊

--  作者:lianchengcs
--  发布时间:3/22/2006 9:45:00 PM

--  
学习
--  作者:liweizhou
--  发布时间:3/23/2006 11:13:00 AM

--  
....大概看懂了,不过不知道操作能不能成功。。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
4,279.999ms