<%
Response.Expires = -9999
Response.AddHeader "pragma", "no-cache"
Response.AddHeader "cache-ctrol", "no-cache"
Response.ContentType = "image/jpeg"
'生成安全码的函数
function make_randomize(max_len)'生成长度
'中文/数字/字母/ 最少4个
txt="飘易博客学校书本爷奶百度常春明天谢李润梅皇帝太后个习惯就周立波三峰环境好人啊电视剧影视片你是谁我爱爸妈河蟹草泥马微软谷歌雅虎联想戴惠普佳能神州方正华硕"
s=""
for i=0 to max_len-1
randomize
s=s&Mid(txt,Rnd*(Len(txt)-max_len)+1,1)
next
make_randomize=s
end function
'随机字体
function fontthis()
fontall="宋体|黑体|楷体|隶书|华文中宋|华文细黑"
fontarr=split(fontall,"|")
randomize
fontthis=fontarr(Int((Ubound(fontarr)-0+1)*Rnd+0))
end function
random_num=make_randomize(3) '飘易:生成3位的安全码
Session("GetCode")=random_num '飘易:赋值session
Set Jpeg = Server.CreateObject("Persits.Jpeg") '调用组件
Jpeg.Open Server.MapPath("code.jpg") '打开准备的图片
for i=1 to 3
Jpeg.Canvas.Font.Rotation = (Rnd*60-30) '倾斜度
randomize
Jpeg.Canvas.Font.Color = (Rnd*255)*255*255+255*255+(Rnd*255) '颜色
Jpeg.Canvas.Font.Family = fontthis() '字体
Jpeg.Canvas.Font.Bold = false '是否加粗 true/false
Jpeg.Canvas.Font.Size = Int((30-20+1)*Rnd+20) '字体大小:20-30
Jpeg.Canvas.PrintText 10+(i-1)*35, 5, Mid(random_num,i,1) '飘易:添加位置
next
jpeg.SendBinary '输出图片
%>
另外,在输入验证码提交验证的时候,需要判断验证码是否未空,一定要注意每次输入的验证码仅可以比对一次,即如果验证失败,则必须把 session 清空,如果验证成功后,也必须把这个 session 清空。验证失败清空是为了防止暴 力破 解;验证成功清空是为了防止有人利用验证成功的这个session,不断提交数据。
<%
verifycode = request.form("verifycode")
if verifycode="" or Session("getcode")="" or LCase(cstr(verifycode))<>LCase(cstr(Session("getcode"))) then
''验证失败
Session("getcode")="" '清空session
response.write "<SCRIPT language=JavaScript>alert('验证码错误!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
else
''验证成功
Session("getcode")="" '清空session
''验证成功后的处理语句
end if
%>