- 贡献
- 0
- 金钱
- 0
- 性别
- 保密
- 威望
- 0
- 最后登录
- 2011-6-21
- 精华
- 0
- 帖子
- 3686
- 积分
- 0
- 阅读权限
- 10
- 注册时间
- 2011-6-21
- UID
- 70425174
- 贡献
- 0
- 金钱
- 0
- 性别
- 保密
- 威望
- 0
- 最后登录
- 2011-6-21
- 精华
- 0
- 帖子
- 3686
- 积分
- 0
- 阅读权限
- 10
- 注册时间
- 2011-6-21
- UID
- 70425174
|
首先本人承认论坛里最近出现了太多的垃圾广告很多朋友也为此抓狂至于朋友们提出取消认证码的建议估计近一段时间内不可能被采纳 然后再讨论下现在论坛认证码的缺点1.广告机的自动识别已经很容易解决字符认证。即便是中文验证也已经被自动识别!所以,不是太具有防止自动刷帖功能!2.用户输入字符验证码的时候需要切换输入法的麻烦!3.字符显示太小,以至于玩家无法分辨“0”与“O”、“9”与“y”等的却别,甚至造成玩家连续30多次无法输入正确的遭遇 所以本人建议将验证码改为加法运算,比如验证码显示“25+64等于?”,那么输入“89”就能通过验证。其实从技术角度考虑是很容易解决的而且很多论坛都采用了加法认证当然也可以使用乘法、除法认证前提是运算结果尽量简单,不能出现过于复杂。例如“99X98等于?”!字体建议使用楷体_GB2312,这样就尽可能的少的出现“0”与“9”无法分辨的出现!验证码也应该适当增大,现在的实在太小了!总不能让大家为了回帖,最后全变成近视吧? 下面是一个简单的加法运算认证码也许有打错字的地方期望高手指点当然,为了防止广告机,增加四则运算就更加安全稳定了 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 %> |
|