关于动易网站验证码修改为4位全数字的问题

前几天一个朋友需要修改动易的验证码,本来验证码是6位的,而且是字母数字混合,这在用户的使用习惯上说并不是太好,所以朋友想改为4位的,本来修改4位并不是太难,但是程序中涉及到底层代码,因此对于一般的用户修改,并不是太容易,而且动易默认的head.fix里定位的就是6位长度,所以将程序修改成4位,如果不将head.fix同时修改,仍然会不起作用的。下面是我修改的一段代码,希望能给大家借鉴。

Dim zimg(4), NStr  '这里由6改为4
Randomize Timer
For i = 0 To 3  '这里由5改为3
  rNum = Fix(9 * Rnd) '将35改为9即为使用纯数字密码
  zimg(i) = rNum
  listnum = listnum & Mid(listcode, rNum + 1, 1)
Next
Session("CheckCode") = listnum
'*********************
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("../images/body" & CodeType & ".Fix")
Ados1.write Ados.Read(1920) '这里由2880改为1920
For i = 0 To 3 '这里由5改为3
  Ados.Position = (35 - zimg(i)) * 480
  Ados1.Position = i * 480
  Ados1.write Ados.Read(480)
Next
'得到图像头部信息
Ados.LoadFromFile Server.mappath("../images/head.fix")
Pos = LenB(Ados.Read())
'Ados.Position = Pos
'将头部信息与实体部分合并成横向排列
On Error Resume Next
For i = 0 To 15
  For j = 0 To 3 '这里由5改为3
    Ados1.Position = i * 32 + j * 480
    Ados.Position = Pos + 30 * j + i * 270
    Ados.write Ados1.Read(30)
  Next
Next 
 
而修改head.fix需要用到UltraEdit,将3C 改为28 就是4位验证码的宽度,改为1E就是3位的,改为14就是2位的,改为32就是5位的,改为0A就是1位的.

其他就没有什么了。



更多
[本日志由 admin 于 2010-08-19 11:31 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 动易 验证码
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.