因为在写“易久乐”的程序时也需要验证码,可我发现现在的垃圾信息蛮暴力的,普通的验证码根本不起作用。就像这里三天两头的总会出现几个垃圾留言,也不清楚到底是机器人作怪还是有人恶意为之。总之是烦不胜烦啊!所以,换个验证码试试看。当然这样一来输入的时候是麻烦了一些,不过没关系,反正我这里也少有朋友发表高见,真想说话的人也不会在乎这功夫不是?唯愿不再有垃圾信息就最好了。要是还有,那我也只能欲哭无泪了,天知道谁会故意和我过不去呢?一句话,不是君子,怎么防也没法!
本想弄个全中文的验证码,无柰自己太菜也怪当初学基础的时候逃课呵,不是很明白二进制个中的道理。所以,只弄了个数字转换成中文的。这是在“无忧视窗”淘到的代码,为了美观和有所区别,做了些细微的修改,效果还不错。非常感谢无忧的海娃大哥无私分享,并且不厌其烦的讲解和提示,在此衷心谢过![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.CreateObject("Adodb.Stream")
Ados.Mode=3
Ados.Type=1
Ados.Open
set Ados1=Server.CreateObject("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
' Asp code Created by BlueIdea.COM Web Team V37 2003-7-25
%>
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.CreateObject("Adodb.Stream")
Ados.Mode=3
Ados.Type=1
Ados.Open
set Ados1=Server.CreateObject("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
' Asp code Created by BlueIdea.COM Web Team V37 2003-7-25
%>
< %
c = Request.form("c")
'如果可以输入小写的数字,请把下面三行注释掉
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
%>
c = Request.form("c")
'如果可以输入小写的数字,请把下面三行注释掉
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



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