簡體   English   中英

ASP.NET C#驗證用戶名和密碼

[英]ASP.NET C# Validating username and password

我正在嘗試從MySql服務器驗證用戶名和密碼。 登錄驗證有效,但我一生都無法弄清楚為什么“創建新用戶”驗證無效。

這是用於注冊新用戶的代碼。 發生了什么事?

catch (Exception)
    {
        Label1.Text = "Brukernavnet er allerede i bruk";
    } 

看起來這部分^某種程度上對我來說是毀了它,每當我測試運行此代碼時,我都會收到此消息。

protected void newBtn_Click(object sender, EventArgs e)
    {
        String cs = "Database=trafikkskole; User=user; Password=password";
        MySqlConnection dbconnect = new MySqlConnection(cs);

        try
        {

            dbconnect.Open();
            cmd.CommandText = "INSERT INTO user (username, password) VALUES (@un, @pw)";
            cmd.Parameters.AddWithValue("@un", inputUser.Text);
            cmd.Parameters.AddWithValue("@pw", inputPw.Text);
            cmd.Connection = dbconnect;
            int a = cmd.ExecuteNonQuery();

            if (a > 0)
            {
                Label1.Text = "Gratulerer! Du har nå laget en bruker!";
            }

            else
            {
                Label1.Text = "ERROR";
            }

        }

        catch (Exception)
        {
            Label1.Text = "Brukernavnet er allerede i bruk";
        }

        finally
        {
            dbconnect.Close();
        }
    }

}

編輯:

如果我這樣嘗試:

protected void newBtn_Click(object sender, EventArgs e)
    {
        String cs = "Database=trafikkskole; User=root; Password=root";
        MySqlConnection dbconnect = new MySqlConnection(cs);

        String sql = "SELECT * FROM user";
        MySqlCommand cmd = new MySqlCommand(sql, dbconnect);
        da = new MySqlDataAdapter(cmd);
        MySqlCommandBuilder cb = new MySqlCommandBuilder(da);
        ds = new DataSet("TEST");
        da.Fill(ds, "user");
        Response.Write(ds.Tables["user"].Rows.Count);     

        try
        {

            dbconnect.Open();
            cmd.CommandText = "INSERT INTO user (username, password) VALUES (@un, @pw)";
            cmd.Parameters.AddWithValue("@un", inputUser.Text);
            cmd.Parameters.AddWithValue("@pw", inputPw.Text);
            cmd.Connection = dbconnect;
            int a = cmd.ExecuteNonQuery();

            if (a > 0)
            {
                Label1.Text = "Gratulerer! Du har nå laget en bruker!";
            }

            else
            {
                Label1.Text = "ERROR";
            }

        }



        catch (Exception Exception)
        {
            Label1.Text = "Brukernavnet er allerede i bruk";

        }

        finally
        {
            dbconnect.Close();
        }
    }

}

最終可能使用戶沒有用戶名或密碼。

有很多事情可能會出錯。 您應該檢查exception.message以獲得對它可能是什么的見解。

例如,在catch語句中放置一個斷點,看看是否為諸如...之類的事件引發了異常,該用戶名是否已經存在,並且SQL引發了錯誤。 ...或者用戶名/密碼為空,太長等...

無論如何,將catch語句更改為catch(Exception exception)並查看異常是什么。

我要感謝大家的努力,找到了一個可行的解決方案,並將其發布在此處以供將來參考。

protected void newBtn_Click(object sender, EventArgs e)

        {
        String cs = "Database=trafikkskole; User=root; Password=root";
        MySqlConnection dbconnect = new MySqlConnection(cs);

        try
        {

            if (!string.IsNullOrWhiteSpace(inputUser.Text) && !string.IsNullOrWhiteSpace(inputPw.Text))
            {
                dbconnect.Open();
                Label1.Text = "Gratulerer! Du har nå laget en bruker!";
                string qry = "INSERT INTO user(username, password) VALUES (@un, @pw)";
                cmd = new MySqlCommand(qry, dbconnect);
                cmd.Parameters.AddWithValue("@un", inputUser.Text);
                cmd.Parameters.AddWithValue("@pw", inputPw.Text);
                cmd.Connection = dbconnect;
                cmd.ExecuteNonQuery();
            }

            else
            {
                Label1.Text = "ERROR";
            }

        }

        catch (Exception)
        {
            Label1.Text = "Brukernavnet er allerede i bruk";

        }


        finally
        {
            dbconnect.Close();
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM