修改验证码为中文数字验证码

« 返回上页作者:乔夫  分类: 网事悠游  日期:2006-5-19 at 12:04  

因为在写“易久乐”的程序时也需要验证码,可我发现现在的垃圾信息蛮暴力的,普通的验证码根本不起作用。就像这里三天两头的总会出现几个垃圾留言,也不清楚到底是机器人作怪还是有人恶意为之。总之是烦不胜烦啊!所以,换个验证码试试看。当然这样一来输入的时候是麻烦了一些,不过没关系,反正我这里也少有朋友发表高见,真想说话的人也不会在乎这功夫不是?唯愿不再有垃圾信息就最好了。要是还有,那我也只能欲哭无泪了,天知道谁会故意和我过不去呢?一句话,不是君子,怎么防也没法!

本想弄个全中文的验证码,无柰自己太菜也怪当初学基础的时候逃课呵,不是很明白二进制个中的道理。所以,只弄了个数字转换成中文的。这是在“无忧视窗”淘到的代码,为了美观和有所区别,做了些细微的修改,效果还不错。非常感谢无忧的海娃大哥无私分享,并且不厌其烦的讲解和提示,在此衷心谢过![wink][lol]

先用它了,慢慢再看有没有办法弄成全中文的,努力想,努力做,努力淘,呵呵。。。

< %
Option Explicit
Response.buffer=true
NumCode

With Response
    .Expires = 0
    .Expiresabsolute = Now() - 1
    .AddHeader "pragma","no-cache"
    .AddHeader "cache-control","private"
    .CacheControl = "no-cache"
End With

Function NumCode()
    dim zNum,i,j
    dim Ados,Ados1
    Randomize timer
    zNum = cint(8999*Rnd+1000)
    Session("validateCode") = zNum
    dim zimg(4),NStr
        NStr=cstr(zNum)
        For i=0 to 3
            zimg(i)=cint(mid(NStr,i+1,1))
        Next
    dim Pos
    set Ados=Server.Cr&#101;ateObject("Adodb.Stream")
        Ados.Mode=3
        Ados.Type=1
        Ados.Open
    set Ados1=Server.Cr&#101;ateObject("Adodb.Stream")
        Ados1.Mode=3
        Ados1.Type=1
        Ados1.Open
        Ados.LoadFromFile(Server.mappath("newbody.Fix.bmp"))
        Ados1.write Ados.read(2082)
        for i=0 to 3
            Ados.Position=(9-zimg(i))*520+54
            Ados1.Position=i*520
            Ados1.write ados.read(520)
        next
        Ados.LoadFromFile(Server.mappath("head.fix"))
        Pos=lenb(Ados.read())
        Ados.Position=Pos
        for i=0 to 12 step 1
            for j=0 to 3
                Ados1.Position=i*40+j*520
                Ados.Position=Pos+39*j+i*156
                Ados.write ados1.read(39)
            next
        next
        Response.ContentType = "image/BMP"
        Ados.Position=0
        Response.BinaryWrite Ados.read()
        Ados.Close:set Ados=nothing
        Ados1.Close:set Ados1=nothing
End Function
&#39; Asp code Cr&#101;ated by BlueIdea.COM Web Team V37 2003-7-25
%>
< %
c = Request.form("c")

&#39;如果可以输入小写的数字,请把下面三行注释掉
 for ii = 0 to 9
    c = Replace(c,Cstr(ii),"")
 next

 c = Replace(c,"零","0")
 c = Replace(c,"一","1")
 c = Replace(c,"二","2")
 c = Replace(c,"三","3")
 c = Replace(c,"四","4")
 c = Replace(c,"五","5")
 c = Replace(c,"六","6")
 c = Replace(c,"七","7")
 c = Replace(c,"八","8")
 c = Replace(c,"九","9")

if Cstr(c) <> Cstr(Session("validateCode")) then
    Response.write ("验证码不正确")
    Response.end
end if
%>

当然这里的图片为了美观还是沿用的老方法,需要做一个 1:10 的 BMP 图片以及一个 54 字节的 BMP 头文件。不了解的朋友,无忧有源码可以下载:http://www.51windows.net/data/?url=/data/files/file_776.asp

更多分享

Random Posts

1 条评论  Trackback Url:http://ichov.com/web/zhong-wei-yan-zheng.html/trackback

One Response to “修改验证码为中文数字验证码”

  1. 白冰 says:

    看来真是有根搅屎棍的存在,一晚上又提交了 8 条垃圾留言,[cry][cry]!!!
    郁闷沉思ing…

有啥说啥 Leave a Reply