为什么我的验证码的session的值总是前一个验证码?(急)

andybll 2007-08-09 03:21:06
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("cnbruce.com_ValidateCode") = Cstr(RndNum) 'session值
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
%>
index.asp
<td>验证码
<input type="hidden" name="hiddenField" value=<%= Session("cnbruce.com_ValidateCode")%>></td>
<td>
<input name='validatecode' type='text' size='5'> <img src='validatecode.asp>' align='absmiddle' border='0'>
</td>
=====================
hiddenField 里面的值求不出当前Session的值,总显示的前一个验证码的值,请各件大侠帮我看一看.
...全文
409 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuqianskys 2008-11-27
  • 打赏
  • 举报
回复
我的博客里面写了关于验证码取值的文章、我自己也碰到过,解决了,所以你可以去看看
littlelam 2007-08-15
  • 打赏
  • 举报
回复
<%
if Cstr(Session("cnbruce.com_ValidateCode"))<>Trim(Request("validatecode")) or Trim(Request("validatecode")) ="" then
Response.Write("错误的验证码!")
end if
Session("cnbruce.com_ValidateCode") = "" '不管正确与否,要重新生成Session
%>
有高人能写识别验证码图片的程序,最好用复杂点的验证码图片
andybll 2007-08-15
  • 打赏
  • 举报
回复
现在我做的是提交后到另一页验证.用的session.程序是没问题了.不过还会有人乱发信息.我设置了验证码怎么还会有呢?难道他能自动算出来?
mysqlaping 2007-08-13
  • 打赏
  • 举报
回复
你这样设计是不科学的。
别人可以通过编程来自动登录你的系统的。
就有可能乱发信息。
前台还是不要验证验证码是否正确了。
littlelam 2007-08-13
  • 打赏
  • 举报
回复
Session不用传的啊
只要会话存在任何页面都可以用
Session("xxx")
来取值的
<%
if Cstr(Session("cnbruce.com_ValidateCode"))<>Trim(Request("validatecode")) or Trim(Request("validatecode")) ="" then
Response.Write("错误的验证码!")
'Session("cnbruce.com_ValidateCode") = ""
end if
%>
littlelam 2007-08-13
  • 打赏
  • 举报
回复
Session不用传的啊
只要会话存在任何页面都可能用
Session("xxx")
来取值的
andybll 2007-08-13
  • 打赏
  • 举报
回复
哪位大侠知道该怎么传这个传啊
andybll 2007-08-09
  • 打赏
  • 举报
回复
littlelam(竹子岌):
我只是想在index.asp页面上即能看到图片,又能知道图片里的数值是什么,这样才能比较输入的是否一样啊.
littlelam 2007-08-09
  • 打赏
  • 举报
回复
你这样写有什么意义?如果你要看Session的值,应该在新的页面里调用。才能查看到当前的Session值
littlelam 2007-08-09
  • 打赏
  • 举报
回复
如果这样写
<td>
<input name='validatecode' type='text' size='5'> <img src='validatecode.asp>' align='absmiddle' border='0'>
</td>
<td>验证码
<input type="hidden" name="hiddenField" value=<%= Session("cnbruce.com_ValidateCode")%>></td>
就有可能是一样了
但也不一定,因为这个页面打开了,不一定validatecode.asp也很快就打开了
littlelam 2007-08-09
  • 打赏
  • 举报
回复
<td>验证码
<input type="hidden" name="hiddenField" value=<%= Session("cnbruce.com_ValidateCode")%>></td>
<td>
<input name='validatecode' type='text' size='5'> <img src='validatecode.asp>' align='absmiddle' border='0'>
</td>
=================
当然是这样了,你先取了Session("cnbruce.com_ValidateCode")的值,这个时候
还没运行'validatecode.asp这个页面
等运行了这个页面Session("cnbruce.com_ValidateCode")才重新赋值啊

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧