当前位置: 首页 > 图文教程 > 网络编程 > ASP > 动网论坛验证码改进 加法验证码(ASPJpeg版)

ASP
对连串英文自动换行的解决方法 IE5.5
怎样写你自己的EMAIL组件(原理)
ASP中有关timeout超时的体会
用ASP实现从SQL Server导出数据到Access
ASP向NT域中加一个用户
ASP乱码的解决方法
关于 aspsmartupload 注册问题
利用XML不离开页面刷新数据
IIS 处理 SEARCH 请求漏洞
不用组件实现上载功能(1)
不用组件实现上载功能(2)
在网页中实现OICQ里的头像选择的下拉框
仅用xsl和asp实现分页功能
如何使用context()方法将数据置入表格(XML)
利用ASP从远程服务器上接收XML数据
将数据库里面的内容生成EXCEL
怎样在ASP里面创建统计图表
加密你的Access数据库
利用global.asp定时执行ASP
加密QueryString数据

动网论坛验证码改进 加法验证码(ASPJpeg版)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-12   浏览: 241 ::
收藏到网摘: n/a

很多站长都为论坛里太多的垃圾广告抓狂,本程序就是为了对付论坛垃圾广告群发器的。 将验证码改为加法运算,比如验证码显示“25+64等于?”,那么输入“91”就能通过验证。 来看看效果图对比:字符验证码: → 加法验证码:
优点:
①与纯字符验证码相比,本程序效防止了绝大部分(99%以上)广告机的自动识别。即使是中文验证码,也能被市面上的部分广告机识别。
②与中文验证码相比,避免了用户输入用户名密码验证码的时候需要切换输入法的麻烦。
有兴趣的朋友,还可以扩展为其他的运算,比如乘法,减法,乘方等。
使用方法:将以下代码保存为Dv_GetCode.asp文件,替换动网论坛的该文件。背景色、字体颜色可在代码中修改。
说明:该程序需要网站空间支持ASPJpeg组件、楷体_GB2312字体。
后续我会发布一个不需要组件及字体支持的版本,有兴趣者请关注我的博客。
复制代码 代码如下:

<%
'=============================================================================
'动网论坛加法验证码(ASPJpeg版)
'作者:cuixiping
'博客(CSDN):http://blog.csdn.net/cuixiping/
'博客(博客园):http://www.cnblogs.com/cuixiping/
'日期:2008年11月
'生成100x20的jpeg图片验证码,内容类似“25+64等于?”
'/upload/tech/20091012/20091012012648_4e4b5fbbbb602b6d35bea8460aa8f8e5.jpeg)。
'如果服务器没有“楷体_GB2312”字体,请修改为其他字体并调整字符位置。
'使用方法:将该代码替换动网论坛的Dv_GetCode.asp文件中的内容,文件首尾不要留空行。
'=============================================================================
Const FontColor = &H000000 ' 字体颜色
Const BgColor = &HFFCCFF ' 背景颜色
Call CreatValidCode("GetCode")
Sub CreatValidCode(pSN)
Dim x, Jpeg
Randomize
x = Array(1+Int(Rnd()*9), Int(Rnd()*10), 1+Int(Rnd()*9), Int(Rnd()*10), 0, 0, "+")
x(4) = x(0)*10 + x(1)
x(5) = x(2)*10 + x(3)
'Session(pSN) = CStr(Eval(x(4) & x(6) & x(5)))
Session(pSN) = CStr(x(4) + x(5))
Set Jpeg = Server.CreateObject("/upload/tech/20091012/20091012012649_07a96b1f61097ccb54be14d6a47439b0.jpeg")
Jpeg.New 100,20,BgColor
Jpeg.Quality=100
With Jpeg.Canvas
.Font.Bold = True
.Font.Size = 16
.Font.Rotation = 0
.Font.Family = "楷体_GB2312"
.Font.Color = FontColor
.PrintText 4, 3, CStr(x(0))
.PrintText 14, 3, CStr(x(1))
.PrintText 26, 3, x(6)
.PrintText 38, 3, CStr(x(2))
.PrintText 48, 3, CStr(x(3))
.Font.Rotation = 15
.PrintText 55, 3, "等"
.PrintText 70, 3, "于"
.PrintText 85, 3, "?"
End With
'禁止缓存
Response.ContentType = "image/jpeg"
Response.Expires = -9999
Response.AddHeader "pragma", "no-cache"
Response.AddHeader "cache-ctrol", "no-cache"
Response.AddHeader "Content-Disposition","inline; filename=vcode.jpg"
Jpeg.SendBinary
Jpeg.Close
Set Jpeg = Nothing
End Sub
%>