《电子电脑》显示文章详细内容: [展开] [回复] [网址] [举报] [屏蔽]
LionsRuler-木法沙
LionsRuler-木法沙目前处于离线状态
等    级:资深长老
经 验 值:7270
魅 力 值:2197
龙    币:12578
积    分:7779.9
注册日期:2003-08-12
 
  查看LionsRuler-木法沙个人资料   给LionsRuler-木法沙发悄悄话   将LionsRuler-木法沙加入好友   搜索LionsRuler-木法沙所有发表过的文章   给LionsRuler-木法沙发送电子邮件      

这个问题困扰了我N久啊--验证码总是错误,为什么?-帮帮我啊。
网上抄的一个验证码的代码,见附1。
登陆页面,引用也很简单:
<input name="ValidCode" type="text" id="ValidCode" size="4" maxlength="4">
<img src="functionASP/validcode.asp" width="60" height="18">

登陆提交以后,先判断用户名和密码是否匹配,如果匹配,
再比对Session中验证码与上页面表单转送的验证码,如果不同,页面转向vcerror.asp->“提示验证码错误,重登陆”!
代码如下:
If Session("ValidCode")<>Request.Form("ValidCode") Then
Response.Redirect "vcerror.asp" ' 如果验证码不对,转向vcerror.asp页面


本地调试一点问题都没有。但是一传到服务器上了,可能多人访问时,总是出现验证码不对,总是转向vcerror.asp页面。
试着换过其它验证码,仍然是存在验证码不对的问题。

到底是什么回事啊?网站其它用户登陆时,也发现同样的问题。





附1:验证码代码:validcode.asp
<%@LANGUAGE="VB&#115cript" CODEPAGE="936"%>
<%
Call Com_CreatValidCode("ValidCode")
Sub Com_CreatValidCode(pSN)
Response.Expires = -9999
Response.AddHeader "Pragma","no-cache"
Response.AddHeader "cache-ctrol","no-cache"
Response.ContentType = "Image/BMP"
Randomize
Dim i, ii, iii
Const cOdds = 8 '杂点出现的机率
Const cAmount = 10 '文字数量
Const cCode = "0123456789"
'颜色的数据(字符,背景)
Dim vColorData(1)
vColorData(0) = ChrB(0) & ChrB(0) & ChrB(255) '蓝0,绿0,红0(黑色)
vColorData(1) = ChrB(235) & ChrB(235) & ChrB(235) '蓝250,绿236,红211(浅蓝色)
'随机产生字符
Dim vCode(4), vCodes
For i = 0 To 3
vCode(i) = Int(Rnd * cAmount)
vCodes = vCodes & Mid(cCode, vCode(i) + 1, 1)
Next
Session(pSN) = vCodes '记录入Session

'字符的数据
Dim vNumberData(10)
vNumberData(0) = "1110000111110111101111011110111101001011110100101111010010111101001011110111101111011110111110000111"
vNumberData(1) = "1111011111110001111111110111111111011111111101111111110111111111011111111101111111110111111100000111"
vNumberData(2) = "1110000111110111101111011110111111111011111111011111111011111111011111111011111111011110111100000011"
vNumberData(3) = "1110000111110111101111011110111111110111111100111111111101111111111011110111101111011110111110000111"
vNumberData(4) = "1111101111111110111111110011111110101111110110111111011011111100000011111110111111111011111111000011"
vNumberData(5) = "1100000011110111111111011111111101000111110011101111111110111111111011110111101111011110111110000111"
vNumberData(6) = "1111000111111011101111011111111101111111110100011111001110111101111011110111101111011110111110000111"
vNumberData(7) = "1100000011110111011111011101111111101111111110111111110111111111011111111101111111110111111111011111"
vNumberData(8) = "1110000111110111101111011110111101111011111000011111101101111101111011110111101111011110111110000111"
vNumberData(9) = "1110001111110111011111011110111101111011110111001111100010111111111011111111101111011101111110001111"
vNumberData(10) = "1111011111111101111111101011111110101111111010111111101011111100000111110111011111011101111000100011"

'输出图像文件头
Response.BinaryWrite ChrB(66) & ChrB(77) & ChrB(230) & ChrB(4) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) &_
ChrB(0) & ChrB(0) & ChrB(54) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(40) & ChrB(0) &_
ChrB(0) & ChrB(0) & ChrB(40) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(10) & ChrB(0) &_
ChrB(0) & ChrB(0) & ChrB(1) & ChrB(0)
'输出图像信息头
Response.BinaryWrite ChrB(24) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(176) & ChrB(4) &_
ChrB(0) & ChrB(0) & ChrB(18) & ChrB(11) & ChrB(0) & ChrB(0) & ChrB(18) & ChrB(11) &_
ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) &_
ChrB(0) & ChrB(0)
For i = 9 To 0 Step -1 '历经所有行
For ii = 0 To 3 '历经所有字
For iii = 1 To 10 '历经所有像素
'逐行、逐字、逐像素地输出图像数据
If Rnd * 99 + 1 < cOdds Then '随机生成杂点
Response.BinaryWrite vColorData(0)
Else
Response.BinaryWrite vColorData(Mid(vNumberData(vCode(ii)), i * 10 + iii, 1))
End If
Next
Next
Next
End Sub%>

--
我要签名,我要签名!mufasa@hlgnet.com
2007-06-08 16:57:17   此文章已经被查看242次   
 相关文章: [回复]  [顶端] 



  您必须登录论坛才可以发表文章:
 
用户名:   密码:   记住密码:    (忘记密码 注册




版权所有 回龙观社区网 经营许可证编号:京B2-20201639 昌公网安备1101140035号

举报电话:010-86468600-5 举报邮箱: