注册 登录
编程论坛 ASP技术论坛

ASP求大神帮我看看问题出在哪里了!

yokiyao 发布于 2016-03-20 00:24, 5250 次点击
asp 看代码,如果条件不符合都正确提示,可如果所有条件都符合,它反过来会提示“必填项目不能为空”

<!--#include file="conn.asp"-->
<%
if(request("action")="yes") then
   uid=request("uid")
   upass=request("upass")
   yaoq=request("yaoq")
   uemail=request("uemail")
   
   if uid="" or upass="" or yaoq="" or uemail="" then
   Response.write "<SCRIPT language=JavaScript>alert('必填项目不能为空!');history.go(-1);</SCRIPT>"
   end if
   
   Set rs1= Server.CreateObject("ADODB.Recordset")
       SQL="Select * from [ACC] where FLD_ID='"&uid&"'"
       rs1.open SQL,conn,1,3
       if rs1.eof or rs1.bof then
       rs1.close
   Response.write "<SCRIPT language=JavaScript>alert('账户不存在,请重新输入!');history.go(-1);</SCRIPT>"
   Response.End
   else
       if rs1("PASSWORD")<>upass then
   rs1.close
   Response.write "<SCRIPT language=JavaScript>alert('密码错误,请重新输入!');history.go(-1);</SCRIPT>"
   Response.End
   end if
   
   if rs1("Mail")<>uemail then
   rs1.close
   Response.write "<SCRIPT language=JavaScript>alert('邮件错误,请重新输入!');history.go(-1);</SCRIPT>"
   Response.End
   end if
   
   if rs1("VIP")<>"0" then
   rs1.close
   Response.write "<SCRIPT language=JavaScript>alert('您不符合条件,不能使用该邀请码!');history.go(-1);</SCRIPT>"
   Response.End
   end if

   Set rs2= Server.CreateObject("ADODB.Recordset")
   SQL2="Select * from [yqm] where nb='"&yaoq&"'"
   rs2.open SQL2,conn,1,3
   if rs2.eof or rs2.bof then
   rs2.close
   rs1.close
   Response.write "<SCRIPT language=JavaScript>alert('该邀请码不存在或已被使用!');history.go(-1);</SCRIPT>"
   Response.End
   else
   rs1.addnew
   rs1("YAOQINGMA")=yaoq
   rs1("VIP")="1"
   rs1("VIPTIME")= DateAdd("m", 1,date()) + time()
   rs1.update
   sql2= "delete from [yqm] where id=(select id from [yqm] where nb='"&yaoq&"')"
   conn.execute sql2
   rs2.close
   end if
   set rs2=nothing
   rs1.close
   Response.write "<SCRIPT language=JavaScript>alert('使用成功!');history.go(-1);</SCRIPT>"
       end if
   set rs1=nothing
end if
%>

非常奇怪,如果表单提交的数据不符合规则,那么那些alert('.....!')
如:【密码错误,请重新输入!、您不符合条件,不能使用该邀请码!、该邀请码不存在或已被使用!】都可以正常出来!
反过来如果所有条件符合,他却不执行写入与删除,却又返回去执行  【 alert('必填项目不能为空!')】这个,我把这个判断去掉,他就执行【alert('账户不存在,请重新输入!');】

到底问题出在哪里,
5 回复
#2
yokiyao2016-03-20 00:31
另外,我有一个注册页面跟这个就是差不多的就没问题~~~就是注册那个是判断id记录不存在才执行 这个只是反过来ID记录存在才执行  其他语句都基本一样~~~就是奇怪,为什么这个就不行呢
#3
yokiyao2016-03-20 01:02
它就是一到写入数据这步,就不执行了,然后又提交一个空数据给程序再次处理~~~
#4
yokiyao2016-03-20 01:16
已经懂了~~~~~~~~~
#5
hu9jj2016-03-20 08:54
应该是程序结构逻辑错误。
#6
ke爱的小tu子2021-02-18 01:22

<!--#include file="conn.asp"-->
<%
if(request("action")="yes") then
    uid=request("uid")'账户
    upass=request("upass")'密码
    yaoq=request("yaoq")'邀请码
    uemail=request("uemail")'邮箱
   
    if uid="" or upass="" or yaoq="" or uemail="" then
        Response.write "<SCRIPT language=JavaScript>alert('必填项目不能为空!');history.go(-1);</SCRIPT>"
        response.end
    end if
   

    Set rs1= Server.CreateObject("ADODB.Recordset")
    SQL="Select * from [ACC] where FLD_ID='"&uid&"'"
    rs1.open SQL,conn,1,3

    if rs1.eof or rs1.bof then
        rs1.close

        Response.write "<SCRIPT language=JavaScript>alert('账户不存在,请重新输入!');history.go(-1);</SCRIPT>"
        Response.End
    else
        if rs1("PASSWORD")<>upass then
            rs1.close
            Response.write "<SCRIPT language=JavaScript>alert('密码错误,请重新输入!');history.go(-1);</SCRIPT>"
            Response.End
        end if
   
        if rs1("Mail")<>uemail then
            rs1.close
            Response.write "<SCRIPT language=JavaScript>alert('邮件错误,请重新输入!');history.go(-1);</SCRIPT>"
            Response.End
        end if
   
        if rs1("VIP")<>"0" then
            rs1.close
            Response.write "<SCRIPT language=JavaScript>alert('您不符合条件,不能使用该邀请码!');history.go(-1);</SCRIPT>"
            Response.End
        end if

        Set rs2= Server.CreateObject("ADODB.Recordset")
        SQL2="Select * from [yqm] where nb='"&yaoq&"'"
        rs2.open SQL2,conn,1,3


        if rs2.eof or rs2.bof then
            rs2.close
            rs1.close
            Response.write "<SCRIPT language=JavaScript>alert('该邀请码不存在或已被使用!');history.go(-1);</SCRIPT>"
            Response.End
        else
            rs1.addnew
            rs1("YAOQINGMA")=yaoq
            rs1("VIP")="1"
            rs1("VIPTIME")= DateAdd("m", 1,date()) + time()
            rs1.update


            sql2= "delete from [yqm] where id=(select id from [yqm] where nb='"&yaoq&"')"
            conn.execute sql2


           '直接用rs2删除行不?

            rs2.close
        end if
        set rs2=nothing
        rs1.close
        Response.write "<SCRIPT language=JavaScript>alert('使用成功!');history.go(-1);</SCRIPT>"
        response.end
    end if


    set rs1=nothing
end if
%>
1