ASP 订阅所有【ASP】的日志

asp仿漂亮的discuz论坛验证码(MysucCode)

使用asp的jpeg组件,我们可以做出各种样式的漂亮的验证码,只是苦于目前大多数服务器的JPEG组件版本太低,无法消除文字而造成的毛边,除非用非透明模式去绘制字体,但这样又无法达到仿制discuz论坛验证码的目的,因此,暂且先不管这么多了,文字有毛边锯齿就先随着它,这并不能成为当前验证码的缺憾。


好了,先看图片预览:







该验证码下载:下载文件 点击下载此文件(相关文件Getcode.asp已增加详细注释)

该验证码非常简单明了,就算你是新手,在你查看过代码注释后,绝对也可以修改自如,可以很容易的修改成文字验证码、加法或其它算法的验证码等等。

相关演示请见本Blog评论及留言。


此处粘贴部分代码:

    
‘注:以下代码为该asp Mysuccode验证码的部分,不可独立运行使用

' 函数(drawBackGroud):打开背景图片
    Function drawBackGroud(srandom,swidth,sheight)
        Jpeg.Open Server.MapPath("background/background"&srandom&".jpg")
        Jpeg.Width = swidth
        Jpeg.Height = sheight    
    End Function
    
    ' 函数(drawLines):绘制随机线
    Sub drawLines
        jpeg.Canvas.Pen.Color = &HADCD3C
        jpeg.Canvas.DrawLine 0, Int(Rnd * jpeg.Height), jpeg.Width, Int(Rnd * jpeg.Height)
    End Sub
    
    ' 函数(drawBar):绘制随机矩形框
    Sub drawBar
        jpeg.Canvas.Brush.Solid = False '填充
        '矩形边框颜色
        jpeg.Canvas.Pen.Color = &H9CCF00
        '绘制矩形框
        jpeg.Canvas.Bar Int(Rnd * jpeg.Width), Int(Rnd * jpeg.Height), Int(Rnd * 50)+20,Int(Rnd * 50)+20
    End Sub

    ' 函数(drawCircle):绘制随机圆
    Sub drawCircle
        jpeg.Canvas.Brush.Solid = False '填充
        jpeg.Canvas.Pen.Color = &H8080FF
        jpeg.Canvas.Circle Int(Rnd * jpeg.Width), Int(Rnd * jpeg.Height), Int(Rnd * 10)+5
        jpeg.Canvas.Pen.Color = &HEEEEEE
        jpeg.Canvas.Circle Int(Rnd * jpeg.Width), Int(Rnd * jpeg.Height), Int(Rnd * 10)+10
    End Sub

' 函数(addLetter)在验证码图片当前位置打印字符
    Sub addLetter(theLetter)    
    
        ' 字体的颜色
        jpeg.Canvas.Font.Color = textColour

        ' 字体阴影
        jpeg.Canvas.Font.ShadowColor = &HFFFFFF
            
        ' 是否为粗体 此处个人感觉加粗效果更好,故不做随机判断,而是直接设定加粗
        'if doTextStyle then
            jpeg.Canvas.Font.Bold = True
        'End If
        
        ' 是否增加下划线 此处个人感觉很丑,注释掉!
        'if doTextStyle then
        '    jpeg.Canvas.Font.Underlined  = True
        'End If    
        
        ' 是否为斜体
        if doTextStyle then
            jpeg.Canvas.Font.Italic   = True
        End If        
        
        ' 字体
        jpeg.Canvas.Font.Family = "Arial Black"'randomFont()        
        
        ' 字体大小
        jpeg.Canvas.Font.Size = randomFontSize()
        
        ' 文字清晰度
        jpeg.Canvas.Font.Quality = 4
        
        ' 背景色 当前使用了背景图,故此处注释掉
        'jpeg.Canvas.Font.BkColor = backColour
        
        ' 字体背景模式(处理平滑)
        jpeg.Canvas.Font.BkMode = "transparent"
        
        ' 绘制字符
        jpeg.canvas.print pixelsAcross, Int(Rnd * 5), theLetter
        
        ' 字符宽度
        pixelsAcross = pixelsAcross + Int(Rnd * 10)+30
        
    End Sub


doomiris[2010-05-26 01:54 PM]del回复
在本地测试时在文件头加上asp文件头就可以了

不过上传到服务器上以后.就不行了.
大概是jpeg组件版本太低了?

本地是2.1.0.2 ,服务器上是1.3.0.0

请问hayden你是在什么版本下测试的呢?
回复来自 hayden 的评论 hayden2010-05-28 07:10 PM 回复
我还真没印象了,好像是1.3或1.5吧~~~
229438832[2010-04-25 02:43 PM]del回复
我去掉所有的空格和注释还是不行 那位朋友行的能给我发个邮件吗?谢谢
邮件:229438832@QQ.com
229438832[2010-04-23 08:35 AM]del回复
哪位大侠把这个验证码改好能显示效果给我发份邮箱,谢谢!
邮箱:229438832@QQ.com
test[2010-01-20 12:36 AM]del回复
teststst
xiandai[2009-12-02 03:29 PM]del回复
引用来自 yifan 引用来自 yifan
去掉所有注释就好了


这个是正解,我也是那么做的,就显示了。
yifan[2009-10-22 05:25 PM]del回复
去掉所有注释就好了
jun[2009-09-24 02:42 PM]del回复
代码里面有暗码 所以去掉空格以及注释等,就可以显示了
cngothic[2009-07-01 04:57 PM]del回复
可能也是转载,里面的说明都不是太清楚
使用方法也没有。新手是不会使用的
博主也十分不负责

hayden 于 2009-06-23 10:40 AM 回复
代码部分注释只为方便阅读,而非基础扫盲,如有需要,请自己加强基础学习。
该款验证码与目前任何asp验证码的使用方法均相同,新手要学会解决问题,而不是追究问题,多使用搜索引擎工具进行自我扫盲吧,呵呵。


人家说的没错.这个验证码的确够傻B的.人家来用你的验证码不是来学如何做验证码.你连个使用说明都没有.那还是找个其它的用吧.在你摸索使用的时间自己写个了.
回复来自 hayden 的评论 hayden2009-07-02 10:25 AM 回复
期待你的验证码作品。
yes[2009-06-22 08:30 AM]del回复
可能也是转载,里面的说明都不是太清楚
使用方法也没有。新手是不会使用的
博主也十分不负责
回复来自 hayden 的评论 hayden2009-06-23 10:40 AM 回复
代码部分注释只为方便阅读,而非基础扫盲,如有需要,请自己加强基础学习。
该款验证码与目前任何asp验证码的使用方法均相同,新手要学会解决问题,而不是追究问题,多使用搜索引擎工具进行自我扫盲吧,呵呵。
kk[2009-06-03 11:43 AM]del回复
是啊本地可以用
上传空间试了  打开时空白一片  请静脉帮助.传到空间上一片空间
我空间也是支持
回复来自 hayden 的评论 hayden2009-06-03 12:04 AM 回复
请检查空间是否支持JPEG图片组件
Benson[2009-05-25 04:06 PM]del回复
跪求,这个验证码,我搞了半天也搞不出来,请赐教啊
zrz[2009-03-17 11:35 AM]del回复
小弟不知道验证码怎么调用,谢谢各位大哥了
发表评论
Name (required)
PassWord(游客发言不需要密码.)

虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.