日期:2014-05-20  浏览次数:20427 次

关于验证码的问题:打开页面后,第一次登陆,验证码总是错误!!第二次就正确了!!怎么解决??
我的验证码是放在   img.aspx里的
在login.aspx里放了验证码校验

第一次运行总是验证码不正确,然后再输入就好了

找原因如下,第一次加载   login.aspx时,   Session[ "VNum "]还未没建立,所以总时验证码不正确

我试着在login.aspx的   pageload里加个默认的   Session[ "VNum "],但是这样做,第一次登陆时,验证码根本就时个摆设,没用

请问各位,这个问题应该怎么解决呢???

------解决方案--------------------
img.aspx中生成图片的同时把验证码放在session中. 然后根据login.aspx用户填入的值与这个session中的值比较.
------解决方案--------------------
1,第一次从浏览器中查看 生成验正码存放到Session[ "A "]中

2,假设你在一个文本框内输入字符和生成的验正码进行比较

TextBox1.Text==Session[ "A "].ToString()

3,点击Button键比较 此时页面又从服务器端返回,生成另外一个验正码

所以 验正码不会正确;

4,在生成验正码的那个页面 Page_Load 里写上

if(IsPostBack)
return;

这样看看可以不?? 我只是猜测,有的地方说的不对 请大家不要YY




------解决方案--------------------
应该把Session[ "VNum "]= "xxxx " ,放在生成IMG图片的程序里,这样才能保证生成图片的同时也生成了SESSION
------解决方案--------------------
你的“login.aspx里放了验证码校验”如何做,如果放在page_load中那么肯定就是问题的根源了。

校验应该在有关按钮或者其它什么控件的事件后执行,这时候login.aspx肯定page_load已经两次了并且是 IsPostback==true,而且img.aspx在第一个装入login.aspx的之后、第二次装入之前就装入了。

你总不至于把判断检验码是否正确的代码放在page_load中吧?如果是,那么可就学到偏门上去了。
------解决方案--------------------
生成字符串的变量没有存。比较有问题。
------解决方案--------------------
可能是浏览器缓存的问题,我也遇到过
你加这段代码试试

Response.BufferOutput = true;
Response.Cache.SetExpires(DateTime.Now.AddMilliseconds(-1));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.AppendHeader( "Pragma ", "No-Cache ");
string VNum =MakeValidateCode( );
Session[ "VNum "]=VNum;
ValidateCode(VNum);
------解决方案--------------------
顶,我也遇到了同样的问题。