我刚学ASP不久,以前只是学静态了网的.现在我遇到了一点关于验证码的问题.我从网上下了一个3个文件,分别是validatebody.fix,validatecode.asp,validatehead.fix.现给出validatecode.asp代码如下: <% Option Explicit Response.Buffer = True Response.Expires = -1 Response.AddHeader "Pragma","no-cache" Response.AddHeader "cache-ctrol","no-cache" Dim RndNum,ImgFileContent Randomize Timer RndNum = Cint(7999*Rnd+1000) Session("ValidateCode") = Cstr(RndNum) ImgFileContent=NumCode(RndNum) Response.ContentType = "image/BMP" Response.BinaryWrite ImgFileContent
Function NumCode(NumS) Dim NumI,NumJ Dim AdoM,AdoN Dim Arr_Img(4),NStr NStr=Cstr(NumS) For NumI=0 To 3 Arr_Img(NumI)=Cint(Mid(NStr,NumI+1,1)) Next Dim Position Set AdoM=Server.CreateObject("Adodb.Stream") AdoM.Mode=3 AdoM.Type=1 AdoM.Open Set AdoN=Server.CreateObject("Adodb.Stream") AdoN.Mode=3 AdoN.Type=1 AdoN.Open AdoM.LoadFromFile(Server.Mappath("validatebody.fix")) AdoN.Write AdoM.Read(1280) For NumI=0 To 3 AdoM.Position=(9-Arr_Img(NumI))*320 AdoN.Position=NumI*320 AdoN.Write AdoM.Read(320) Next AdoM.LoadFromFile(Server.Mappath("validatehead.fix")) Position=Lenb(AdoM.Read()) AdoM.Position=Position For NumI=0 To 9 Step 1 For NumJ=0 To 3 AdoN.Position=NumI*32+NumJ*320 AdoM.Position=Position+30*NumJ+NumI*120 AdoM.Write AdoN.Read(30) Next Next AdoM.Position = 0 NumCode = AdoM.Read() AdoM.Close:Set AdoM=Nothing AdoN.Close:Set AdoN=Nothing End Function %>
在需要添加验证码的页面中添加如下代码:
<input name='validatecode' type='text' size='5'> <img src='imgchk/validatecode.asp' align='absmiddle' border='0'> (在该页面得到了出现验证码和验证码输入框.这里应没问题吧) 记录接受页面处理 If Trim(Request.Form("validatecode"))=Empty Or Trim(Session("cnbruce.com_ValidateCode"))<>Trim(Request.Form("validatecode")) Then response.write("请注意正确输入验证码") response.end end if (在这里我就不怎么懂设置了啊.我在这里也输入了这些代码,出错的话也会提示("请注意正确输入验证码"等信息啊,因为我在此这前以设置了要用户名和密码验证的,出错了信息增加了请注意正确输入验证码"的吧. 根据原来提示的方法说是在生成验证码图片的时候,同时生成了一个Session,其值就是验证码图片中的数字值。同时,提供输入框让用户输入,提交输入值后,与已有的Session值进行比较,根据判断结果做相应判断。这我就不怎么理解了啊,要怎么设置啊.帮一下忙啊.谢谢先了啊.在线等你们的消息啊.有必要的话可以加我Q的啊.