关于验证码的问题:打开页面后,第一次登陆,验证码总是错误!!第二次就正确了!!怎么解决??
我的验证码是放在 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);
------解决方案--------------------顶,我也遇到了同样的问题。