一个登录页面,为什么总是先弹出错误提示,然后才验证用户名密码?郁闷之极~~~~~~~~

时间:2023-02-08 17:11:44
一个实现管理员登录的程序,应该是先判断用户名和密码,然后,如果错误的话再弹出错误提示。但是我写的程序总是先弹出错误提示(不管密码正不正确),再验证用户名和密码,真是郁闷!!!

程序的部分代码:
private sub check_name()
        Dim sqlConn As New SqlConnection("...")
        Dim sqlCmd As New SqlCommand
        sqlCmd.Connection = sqlConn
        sqlCmd.CommandText = "pro_login"  //这是我写的存储过程名
        sqlCmd.CommandType = CommandType.StoredProcedure
        sqlConn.Open()
        //以下是参数定义
        sqlCmd.Parameters.Add(New SqlParameter("@name", SqlDbType.VarChar, 20))
        sqlCmd.Parameters("@name").Value = TextBox1.Text
        sqlCmd.Parameters.Add(New SqlParameter("@pswd", SqlDbType.VarChar, 32))
        sqlCmd.Parameters("@pswd").Value = TextBox2.Text
        定义一个DataReader//
        Dim sqlReader As SqlDataReader = sqlCmd.ExecuteReader
        If sqlReader.Read Then
            Session("user_name") = TextBox1.Text
            Response.Redirect("manage.aspx")
        ElseIf Not sqlReader.Read Then
            submit.Attributes("onclick") = "javascript:alert('用户名或密码不正确,请重新输入')"
            submit.Attributes.Add("onclick", "return alert('用户名或密码不正确,请重新输入')")
            TextBox1.Text = ""
            TextBox2.Text = ""
        End If
        sqlConn.Close()
        sqlConn = Nothing
end sub

我没搞懂程序哪点有错?但为什么总是要先弹出错误提示呢?高人,帮我一下啊,谢谢!!!

14 个解决方案

#1


补充一点:我的数据库连接没有任何问题,存储过程也没问题!

我希望知道为什么会这样。分不是问题,不够可以再加~~~~~~~~~~

#2


If Not sqlReader.Read 可以直接Response.Write("<script>window.alert('***')</script>");

#3


If Not sqlReader.Read 可以直接Response.Write("<script>window.alert('***')</script>");
------------------------------------------------------------------------------
这样好像解决问题了,不过能说一下为什么吗?
我用submit.Attributes.Add("onclick", "return alert('用户名或密码不正确,请重新输入')")为什么就不行?
这两种弹出对话框的方法有什么异同呢?
谢谢!

#4


这里是.NET高级群,在内的都是有一定水平的成员,请大家一起来探讨!   3945892

#5


up

#6


用断点跟一下老,看看先执行的是那句,想想怎么会跳过去的,
帮你顶一下!!

#7


俺初学,麻烦讲一下断点调试是怎么回事,谢谢!

#8


你那种方法会给输入HTML页面中的submit添加固定的js脚本,只要出错一次,alert就自动添到Click事件中

而后台控制Respnose输出流的话就不会产生上面的问题

#9


up

#10


写的好乱
二者有什么不同
他写的是直接输出alert,而你的写法是给submit控件加载了一个属性.需要onclick才能触发.
而且按照你的写法好像不能触发.

#11


submit.Attributes.Add("onclick", "return alert('用户名或密码不正确,请重新输入')")

你这样当然会先弹alert,因为这个onclick是在button提交之前执行的js.

把那个删了,改成这样

if 没通过验证
Response.Write("<SCRIPT language='vbscript'>alert('用户名或密码不正确,请重新输入')</SCRIPT>")
else
   通过验证的操作

#12


谢谢各位的指点!
不过 coldpanth(云之崖) 兄的方法好象不行
我试过了,不能达到目的,是不是还要导入什么东东?

#13


下面的试试。你的if,elseif没用,有点画蛇添足。。if,else就够了

private sub check_name()
        Dim sqlConn As New SqlConnection("...")
        Dim sqlCmd As New SqlCommand
        sqlCmd.Connection = sqlConn
        sqlCmd.CommandText = "pro_login"  //这是我写的存储过程名
        sqlCmd.CommandType = CommandType.StoredProcedure
        sqlConn.Open()
        //以下是参数定义
        sqlCmd.Parameters.Add(New SqlParameter("@name", SqlDbType.VarChar, 20))
        sqlCmd.Parameters("@name").Value = TextBox1.Text
        sqlCmd.Parameters.Add(New SqlParameter("@pswd", SqlDbType.VarChar, 32))
        sqlCmd.Parameters("@pswd").Value = TextBox2.Text
        定义一个DataReader//
        Dim sqlReader As SqlDataReader = sqlCmd.ExecuteReader
If sqlReader.Read Then
            Session("user_name") = TextBox1.Text
            Response.Redirect("manage.aspx")
Else
     Response.Write("<SCRIPT language='vbscript'>alert('用户名或密码不正确,请重新输入')</SCRIPT>")
     TextBox1.Text = ""
     TextBox2.Text = ""
End If
        sqlConn.Close()
        sqlConn = Nothing
end sub

#14


submit.Attributes("onclick") = "javascript:alert('用户名或密码不正确,请重新输入')"
            submit.Attributes.Add("onclick", "return alert('用户名或密码不正确,请重新输入')")

这两句看不懂!!!

#1


补充一点:我的数据库连接没有任何问题,存储过程也没问题!

我希望知道为什么会这样。分不是问题,不够可以再加~~~~~~~~~~

#2


If Not sqlReader.Read 可以直接Response.Write("<script>window.alert('***')</script>");

#3


If Not sqlReader.Read 可以直接Response.Write("<script>window.alert('***')</script>");
------------------------------------------------------------------------------
这样好像解决问题了,不过能说一下为什么吗?
我用submit.Attributes.Add("onclick", "return alert('用户名或密码不正确,请重新输入')")为什么就不行?
这两种弹出对话框的方法有什么异同呢?
谢谢!

#4


这里是.NET高级群,在内的都是有一定水平的成员,请大家一起来探讨!   3945892

#5


up

#6


用断点跟一下老,看看先执行的是那句,想想怎么会跳过去的,
帮你顶一下!!

#7


俺初学,麻烦讲一下断点调试是怎么回事,谢谢!

#8


你那种方法会给输入HTML页面中的submit添加固定的js脚本,只要出错一次,alert就自动添到Click事件中

而后台控制Respnose输出流的话就不会产生上面的问题

#9


up

#10


写的好乱
二者有什么不同
他写的是直接输出alert,而你的写法是给submit控件加载了一个属性.需要onclick才能触发.
而且按照你的写法好像不能触发.

#11


submit.Attributes.Add("onclick", "return alert('用户名或密码不正确,请重新输入')")

你这样当然会先弹alert,因为这个onclick是在button提交之前执行的js.

把那个删了,改成这样

if 没通过验证
Response.Write("<SCRIPT language='vbscript'>alert('用户名或密码不正确,请重新输入')</SCRIPT>")
else
   通过验证的操作

#12


谢谢各位的指点!
不过 coldpanth(云之崖) 兄的方法好象不行
我试过了,不能达到目的,是不是还要导入什么东东?

#13


下面的试试。你的if,elseif没用,有点画蛇添足。。if,else就够了

private sub check_name()
        Dim sqlConn As New SqlConnection("...")
        Dim sqlCmd As New SqlCommand
        sqlCmd.Connection = sqlConn
        sqlCmd.CommandText = "pro_login"  //这是我写的存储过程名
        sqlCmd.CommandType = CommandType.StoredProcedure
        sqlConn.Open()
        //以下是参数定义
        sqlCmd.Parameters.Add(New SqlParameter("@name", SqlDbType.VarChar, 20))
        sqlCmd.Parameters("@name").Value = TextBox1.Text
        sqlCmd.Parameters.Add(New SqlParameter("@pswd", SqlDbType.VarChar, 32))
        sqlCmd.Parameters("@pswd").Value = TextBox2.Text
        定义一个DataReader//
        Dim sqlReader As SqlDataReader = sqlCmd.ExecuteReader
If sqlReader.Read Then
            Session("user_name") = TextBox1.Text
            Response.Redirect("manage.aspx")
Else
     Response.Write("<SCRIPT language='vbscript'>alert('用户名或密码不正确,请重新输入')</SCRIPT>")
     TextBox1.Text = ""
     TextBox2.Text = ""
End If
        sqlConn.Close()
        sqlConn = Nothing
end sub

#14


submit.Attributes("onclick") = "javascript:alert('用户名或密码不正确,请重新输入')"
            submit.Attributes.Add("onclick", "return alert('用户名或密码不正确,请重新输入')")

这两句看不懂!!!