关于验证码的问题,第一次登录总说验证码错误,要第二次才行!CSDN的就没出过这样的问题!!!

时间:2022-08-31 11:16:50
关于验证码的问题,第一次登录总说验证码错误,要第二次才行!CSDN的就没出过这样的问题!!!

搜索不到几篇关于这个问题的,有人说是缓存的问题,我清了缓存照样要两次登录,一般是退出系统后再登录的时候必然第一次说验证码错误,退出的时候我已经session.abandon();过了啊!

百思不得其解!!CSDN的验证码就没出过类似问题!!谁能解决吗???

26 个解决方案

#1


需要验证码代码的话我可以贴出来!

#2


登录的时候把验证码RESPONSE.WRITE出来看是不是上一次登录时候的那个!

#3


还应该是代码的问题,用楼上说的方法把验证码RESPONSE.WRITE出来

#4


如果代码有问题,为什么第一次打开浏览器登录就没问题呢??
难道session.abandon()不能完全清楚所有的session?

#5


那一定是你的session里面没有值吧?你跟踪看一下

#6


你的验证码是放在另外一个aspx中的图片上的吗?

#7


单步调一下。

#8


to:lovvver(www.notsoft.cn)   
是放到其他页面里的!
<tr bgcolor="#FFFFFF"> 
            <td width="111" align="right" height="20">验证码:</td>
            <td width="229"><asp:Image ID="ImageCheck" runat="server" src="ValidateCode.aspx"></asp:Image><asp:textbox id="ValidateCode"  maxlength="5" size="8" Runat="server" height="20px"  class="igray1" ></asp:textbox>
            </td>
          </tr>

#9


Mark

#10


肯定是代码问题

#11


if (String.Compare(Convert.ToString(Session["CheckCode"]), (ValidateCode.Text.ToUpper()), true) != 0)
            {
                Label1.Text = "验证码错误,请输入正确的验证码!";
                Label1.Visible = true;
                return;
            }

#12


if (String.Compare(Convert.ToString(Session["CheckCode"]).ToUpper(), (ValidateCode.Text.ToUpper()), true) != 0)
            {
                Label1.Text = "验证码错误,请输入正确的验证码!";
                Label1.Visible = true;
                return;
            }
应该是这样吧!我想我看到错误在哪里了!

#13


下面是我退出的代码:
        Session.Abandon();        
        Response.Write("<script language='javascript'>");
        Response.Write("alert('谢谢您的使用!');");
        Response.Write("window.navigate('/Default.aspx');");       
        Response.Write("</script>");

上面的改过后还有这个问题,可能是没刷新页面!哪位有更好的退出方式吗??

#14


唉,你都调用了 Session.Abandon(); 
还调用干吗呢,window.navigate('/Default.aspx');
这样当加载/Default.aspx页面时Session又开始了。

#15


修改一下,如果每次退出都必须退到'/Default.aspx‘页,那 Session.Abandon(); 代码应该写到Default.aspx里面

#16


T0:jimh(Jimmy) 
我是想清除session后自动跳转到登录页面,你说的那个方法我试过了,如果那样做生成验证码的那个页面里的session会被清除掉,验证码永远都不对!

#17


不知道为什么都喜欢用Session.Abandon,直接把你的那些Session置空不就行了。
另外:
if (String.Compare(Convert.ToString(Session["CheckCode"]), (ValidateCode.Text.ToUpper()), true) != 0)
            {
                Label1.Text = "验证码错误,请输入正确的验证码!";
                Label1.Visible = true;
                return;
            }

这里代码臃肿不堪,还没有null检测:

if ( Session["CheckCode"] == null )
  ShowError( "登录超时,请重新登录" );
else if ( ((string) Session["CheckCode"]).ToUpper() != ValidateCode.Text.ToUpper() )
  ShowError( "验证码输入错误,请重新登录" );


//.....

void ShowError( string message )
{
                Label1.Text = message;
                Label1.Visible = true;
                return;
}

#18


To:Ivony() 

大哥!谢谢啊!!(你看,还说谢谢!!)

#19


To:Ivony() 
我看你写void ShowError( string message )
就可以用,我总要写上protected void,有时候写成public void

请问这三种写法有什么区别啊?

初学莫笑!!

#20


Learning

#21


代码问题,应该是验证码已经刷新了.但页面没有正确读到.导致比较的时候不相符.把比较的两个值打出来验证一下

#22


兄弟,你确定你游标的位置正确吗?

#23


该回复被版主删除

#24


处理流程有问题.好好检查一下.

#25


验证马多的是,你上网上随便再下个吧。别死抠一个了。

#26


Session.Abandon();        
        Response.Write("<script language='javascript'>");
        Response.Write("alert('谢谢您的使用!');");
        Response.Write("window.navigate('/Default.aspx');");       
        Response.Write("</script>");

这个代码是对的,window.navigate('/Default.aspx');有时候不能刷新default.aspx,
要在这个页面的page_load里加入if(!this.IsPostBack)判断,然后重新刷新一次验证码!
估计差不多!

#1


需要验证码代码的话我可以贴出来!

#2


登录的时候把验证码RESPONSE.WRITE出来看是不是上一次登录时候的那个!

#3


还应该是代码的问题,用楼上说的方法把验证码RESPONSE.WRITE出来

#4


如果代码有问题,为什么第一次打开浏览器登录就没问题呢??
难道session.abandon()不能完全清楚所有的session?

#5


那一定是你的session里面没有值吧?你跟踪看一下

#6


你的验证码是放在另外一个aspx中的图片上的吗?

#7


单步调一下。

#8


to:lovvver(www.notsoft.cn)   
是放到其他页面里的!
<tr bgcolor="#FFFFFF"> 
            <td width="111" align="right" height="20">验证码:</td>
            <td width="229"><asp:Image ID="ImageCheck" runat="server" src="ValidateCode.aspx"></asp:Image><asp:textbox id="ValidateCode"  maxlength="5" size="8" Runat="server" height="20px"  class="igray1" ></asp:textbox>
            </td>
          </tr>

#9


Mark

#10


肯定是代码问题

#11


if (String.Compare(Convert.ToString(Session["CheckCode"]), (ValidateCode.Text.ToUpper()), true) != 0)
            {
                Label1.Text = "验证码错误,请输入正确的验证码!";
                Label1.Visible = true;
                return;
            }

#12


if (String.Compare(Convert.ToString(Session["CheckCode"]).ToUpper(), (ValidateCode.Text.ToUpper()), true) != 0)
            {
                Label1.Text = "验证码错误,请输入正确的验证码!";
                Label1.Visible = true;
                return;
            }
应该是这样吧!我想我看到错误在哪里了!

#13


下面是我退出的代码:
        Session.Abandon();        
        Response.Write("<script language='javascript'>");
        Response.Write("alert('谢谢您的使用!');");
        Response.Write("window.navigate('/Default.aspx');");       
        Response.Write("</script>");

上面的改过后还有这个问题,可能是没刷新页面!哪位有更好的退出方式吗??

#14


唉,你都调用了 Session.Abandon(); 
还调用干吗呢,window.navigate('/Default.aspx');
这样当加载/Default.aspx页面时Session又开始了。

#15


修改一下,如果每次退出都必须退到'/Default.aspx‘页,那 Session.Abandon(); 代码应该写到Default.aspx里面

#16


T0:jimh(Jimmy) 
我是想清除session后自动跳转到登录页面,你说的那个方法我试过了,如果那样做生成验证码的那个页面里的session会被清除掉,验证码永远都不对!

#17


不知道为什么都喜欢用Session.Abandon,直接把你的那些Session置空不就行了。
另外:
if (String.Compare(Convert.ToString(Session["CheckCode"]), (ValidateCode.Text.ToUpper()), true) != 0)
            {
                Label1.Text = "验证码错误,请输入正确的验证码!";
                Label1.Visible = true;
                return;
            }

这里代码臃肿不堪,还没有null检测:

if ( Session["CheckCode"] == null )
  ShowError( "登录超时,请重新登录" );
else if ( ((string) Session["CheckCode"]).ToUpper() != ValidateCode.Text.ToUpper() )
  ShowError( "验证码输入错误,请重新登录" );


//.....

void ShowError( string message )
{
                Label1.Text = message;
                Label1.Visible = true;
                return;
}

#18


To:Ivony() 

大哥!谢谢啊!!(你看,还说谢谢!!)

#19


To:Ivony() 
我看你写void ShowError( string message )
就可以用,我总要写上protected void,有时候写成public void

请问这三种写法有什么区别啊?

初学莫笑!!

#20


Learning

#21


代码问题,应该是验证码已经刷新了.但页面没有正确读到.导致比较的时候不相符.把比较的两个值打出来验证一下

#22


兄弟,你确定你游标的位置正确吗?

#23


该回复被版主删除

#24


处理流程有问题.好好检查一下.

#25


验证马多的是,你上网上随便再下个吧。别死抠一个了。

#26


Session.Abandon();        
        Response.Write("<script language='javascript'>");
        Response.Write("alert('谢谢您的使用!');");
        Response.Write("window.navigate('/Default.aspx');");       
        Response.Write("</script>");

这个代码是对的,window.navigate('/Default.aspx');有时候不能刷新default.aspx,
要在这个页面的page_load里加入if(!this.IsPostBack)判断,然后重新刷新一次验证码!
估计差不多!