c# - SQL 查询后重定向页面

标签 c# asp.net sql-server

假设我在 http://localhost:7924/default ,然后我输入登录信息,这是每种情况下发生的情况:

  1. If password is wrong (or correct) + login_name doesn't exist => refresh page

  2. If password is wrong + login_name exist (correct) => going to error_page

  3. If both are correct => redirected to CP.aspx

  string text = username_login.Text;
    string str2 = password_login.Text;
    SqlConnection sqlcon = new SqlConnection(Functions.Auth());
    SqlCommand sqlcmd = new SqlCommand();
    sqlcmd.CommandText = "SELECT TOP 1 password FROM dbo.Accounts WHERE login_name = @login_name";
    sqlcmd.Parameters.Add("@login_name", System.Data.SqlDbType.NVarChar).Value = text;
    sqlcmd.CommandType = System.Data.CommandType.Text;
    sqlcmd.Connection = sqlcon;
    sqlcon.Open();
    SqlDataReader sqlreader = sqlcmd.ExecuteReader();
    string returnString = String.Empty;
    while (sqlreader.Read())
    {


       if  (sqlreader["password"].ToString() == Functions.CreateMD5Hash("5487" + str2.ToString()))
        {
            this.Session["logged_in"] = "true";
            this.Session["username"] = text;
            base.Response.Redirect("/CP.aspx");

        }
        else

        {
            base.Response.Redirect("/error_page?err=login-fail");
        }

    }

2.3. 都正常工作,但是第一个不是。我不明白为什么它只刷新页面而不是进入错误页面,因为详细信息是错误的。 (因为它无法进行比较)

编辑:我还检查了密码是否为 NULL => 重定向到 error_page 但这也刷新了页面。

最佳答案

你只需要检查它是否有任何值(value)。

if(sqlreader.HasRows)
{
    While...
}
else
{
   //refresh page code here
}

您可能还想考虑更好的架构师 n-tie、表示层、业务层、数据访问层。

关于c# - SQL 查询后重定向页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39013754/

相关文章:

c# - 如何获取 TextRenderer 使用的确切文本边距

asp.net - 为什么这个 DateTime.ParseExact 语句不起作用?

javascript - vb.net web方法接受json

java - 检查表是否存在,使用java中的连接对象

c# - 将 .net System.Int32[] 转换为 matlab 矩阵

c# - 具有完成任务的服务结构任务队列

asp.net - 传递一个值到下一页

sql - 选择 MIN(日期)和 MAX(日期)以及 MAX(日期)运费值

sql-server - 选择 'N' 行并使用 Entity Framework 获取行数

c# - 如何更改 WPF 中不确定进度条动画的速度和宽度?