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

  来看看效果图对比:字符验证码:

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

   → 加法验证码:

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

  优点:

  ①与纯字符验证码相比,本程序效防止了绝大部分(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等于?”

  '需要网站空间支持ASPJpeg组件(Persits.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("Persits.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

  %>